网络通讯协议要点

作者:陆金龙    发表时间:2018-05-27 12:25   

关键词:OSI 7层协议  

1 计算机网络七层/五层协议

2.TCP建立和关闭连接

 SYN表示建立连接,  FIN表示关闭连接,ACK表示响应

2.1 连接的3次握手

第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;

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

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,开始传送数据。

2.2 释放连接的4次挥手

释放连接时的原理与建立连接类似,发送FIN报文来请求释放,发送ACK进行确认。不同的是连接的时候是三次握手,关闭的时候却是四次握手:

当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。

关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端收到了FIN报文。等到Server端所有的数据报文都发送完了,才能发送FIN报文。

3.Socket封装的TCP通讯

TCP/IP只是一个协议栈,必须要具体实现,要提供可供程序员做网络开发所用的接口,这就是Socket编程接口。

Socket是对TCP/IP协议的封装,是一个调用接口(API),通过Socket编程接口来使用TCP/IP协议。