详解socket和tcp/ip协议

来源:互联网 发布:北大青鸟java班学费 编辑:程序博客网 时间:2024/06/06 03:29

tcp/ip

tcp/ip协议是整个互联网通信基础。上层应用大都基于tcp协议。那么tcp的三次握手是怎么操作的呢,tcp和socket又是什么关系?

tcp三次握手

我们都知道,tcp建立连接前,需要进行三次握手。三次握手就是客户端和服务端进行残次通信。通信规则如下:
这里写图片描述
如图(图使用wireshark产生)所示,客户机IP为30.5.100.127,服务器IP为120.26.107.40。
首先客户端发起连接请求,标识为syn建立连接,并且序号为0,服务器端接收到请求后,返回syn ack,序号为0且ack为1。然后客户端接到服务器的反馈后,继续发送一个报文,ack,并且序号为1,ack也为1。此时三次握手建立完成。可以开始传输数据了。

tcp数据传输

当tcp连接建立完成后,就可以进行数据传输了,但是很少有文章介绍到使用tcp传输数据是什么样的,今天我们就想继续阐述一下,tcp是如何完成数据传输的。
这里写图片描述
如黄色的图上可以看到,客户端开始发送tcp报文,其中带上PSH ACK的标志,代表该次发送的是数据,并且seq=1 ack=1。服务器端接收到数据以后,就会回复一个ACK表示该数据已经收到了。那么回复的序号为客户端发送数据的确认号,确认号为序号加上发送的字节大小。

tcp关闭

tcp最后的一个环境,就是关闭。其中关闭由客户端和服务器端都可以发起。本文的例子是用telnet进行测试http协议,由于请求格式是不对的,因此服务器端将会拒绝。那么就有了四次挥手协议。
通上图,首先服务器端发送FIN ACK报文,表示结束该次连接,其中序号继承上一次的确认号。客户端接到后,响应ACK。并且同时发送客户端关闭的报文,服务器端响应ACK,至此,四次挥手结束。整个会话结束。

0 0
原创粉丝点击