TCP/IP模型与Java_Socket的一些认识_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > TCP/IP模型与Java_Socket的一些认识

TCP/IP模型与Java_Socket的一些认识

 2018/8/22 12:22:53  NOthingAj  程序员俱乐部  我要评论(0)
  • 摘要:什么是TCP/IP:TCP/IP是供已连接因特网的计算机进行通信的通信协议,也就是通过TCP/IP,就可以使计算机之间进行信息交换。TCP/IP定义了电子设备(比如计算机)如何连入因特网,以及数据如何在它们之间传输的标准,我的理解是TCP/IP就是电子设备之间数据传输的公用“语言”。HTTP与TCP/IP协议之间的关系:HTTP协议即HyperTextTransferProtocol(超文本传输协议),处于应用层,是Web联网的基础,主要负责数据的包装、服务请求和服务应答
  • 标签:认识 Java socket

什么是 TCP/IP:

  • TCP/IP 是供已连接因特网的计算机进行通信的通信协议,也就是通过 TCP/IP ,就可以使计算机之间进行信息交换
  • TCP/IP 定义了电子设备(比如计算机)如何连入因特网,以及数据如何在它们之间传输的标准,我的理解是 TCP/IP 就是电子设备之间数据传输的公用“语言”

?HTTP 与 TCP/IP 协议之间的关系:

?HTTP 协议即Hyper Text Transfer Protocol(超文本传输协议),处于应用层,是Web联网的基础,主要负责数据的包装、服务请求和服务应答。TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。这里有一段理解对我有所启发:

写道 我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如HTTP、FTP、TELNET等,也可以自己定义应用层协议。WEB使用HTTP协议作应用层协议,以封装HTTP文本信息,然后使用TCP/IP做传输层协议将它发到网络上

?

?TCP/IP 的四层模型结构:

从下到上的四层,分别为连接层(Link Layer)、网络层(Internet Layer)、传输层(Transport Layer)、应用层(Application Layer)。

?

  1. 连接层的作用就是通过物理手段把电脑连接起来,它主要规定了网络的一些电气特性,作用是负责传送0和1的电信号。
  2. 网络层主要包括 IP 协议,RIP协议(Routing Information Protocol,路由信息协议),作用是负责数据的包装、寻址和路由
  3. 传输层提供两种端到端的通信服务,其中?TCP?协议提供可靠的数据流运输服务,UDP?协议提供不可靠的用户数据报服务。虽然 UDP 的不可靠性限制了它的应用场合,但它比 TCP 具有更好的传输效率。
  4. 应用层包括所有和应用程序协同工作,HTTP 即位于应用层利用基础网络交换应用程序专用的数据的协议。负责传送各种最终形态的数据。

什么是 Socket :

浏览其它博客,有一段话: 写道 TCP/IP只是一个协议栈,就像操作系统的运行机制一样,必须要具体实现,同时还要提供对外的操作接口。这个就像操作系统会提供标准的编程接口,比如win32编程接口一样,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口 ?Socket?本身只是对 TCP/IP 协议的一个抽象,其本身并不是任何协议,以程序员视角来讲仅是一个编程接口,需要实现create、listen、connect、accept、send、read和write等方法来完成信息传输。

利用 Socket 完成一次网络连接:

  1. 服务器监听:服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态,等待客户端的连接请求。
    class="java" name="code">ServerSocket serverSocket = new ServerSocket(port); // 指定服务器监听端口
    
    Socket server = serverSocket.accept(); // 等待客户端的连接
  2. 客户端请求:指客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。
    Socket client = new Socket(serverName, port); // 建立服务器名以及端口号
    ??
  3. 连接确认:当服务器端套接字监听到或者说接收到客户端套接字的连接请求时,就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,双方就正式建立连接。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。

服务器:

DataInputStream in = new DataInputStream(server.getInputStream()); // 读入客户端信息

DataOutputStream out = new DataOutputStream(server.getOutputStream()); // 将服务器信息写回客户端

?客户端:

// 将客户端信息传输给服务器
OutputStream outServer = client.getOutputStream();  
DataOutputStream out = new DataOutputStream(outServer); 

// 读入服务端信息
InputStream inFromServer = client.getInputStream();  
DataInputStream in = new DataInputStream(inFromServer);

?

发表评论
用户名: 匿名