Java:Socket,TCP/IP,Http的区别

1.TCP/IP分层

TCP/IP协议不是TCP/IP两个协议的合称,一般指的是因特网TCP/IP协议族。

从协议模型的分层方面,TCP/IP分为四层:数据链路层,网络层,传输层,应用层。IP位于网络层,TCP位于传输层,Http位于应用层。

1.链路层:负责接收IP数据包并通过网络发送,定义物理介质的各种特性。常见的接口层协议有X.25Ethernet 802.3

2.网络层:负责相邻计算之间的通信。常见的网络层协议有IP协议,ICMP协议。

3.传输层:提供应用程序之间的通信。主要作用是格式化数据流,提供可靠的传输。为了提供可靠的传输,传输层协议规定接收端必须发回确认,即“三次握手”。常见的传输层协议有传输控制协议TCP和用户数据协议UDP

4.应用层:向用户提供一组常用的应用程序。应用层协议主要有:文件传输协议FTP,用户远程登录服务TELNET,域名解析服务DNS,简单邮件传输协议SMTP,超文本传输协议HTTP

2.TCP三次握手

(1)为什么要进行三次握手
为了保证服务端能接收到客户端的信息,并能做出正确的应答进行前两次握手(第一次和第二次),为了保证客户端能接收到服务端的信息,并能做出正确的应答进行后两次握手(第二次和第三次)

(2)建立的过程
    第一次握手:客户端发送SYN包(SYN=j)到服务器,并进入SYN_SEND状态,等待服务器确认。

第二次握手:服务器收到SYN包,必须确认客户端的SYNACK=j+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器进入SYN_RECV状态。

第三次握手:客户端收到服务器的SYN包,像服务器发送确认包ACKACK=k+1),包ACK发送完毕,双方进入ESTABLISH状态完成三次握手。

通过这样的三次握手,客户端与服务端建立起可靠的双工连接,开始传输数据

断开连接是服务端和客户端要经过“四次握手”。

3.Socket

    Socket是一个针对TCPUDP编程的接口。应用程序通过它来发送和接收数据,借助它建立TCP连接等等。TCPUDP协议属于传输层,HTTP是应用层的协议,实际上也是建立在TCP协议之上(HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发送机,提供了网络通信的能力)。

    Socket是对TCP/IP协议的封装,Scoket本身不是协议,而是提供了一个调用接口,是对TCP/IP协议的抽象。


你可能感兴趣的:(java,网络编程)