TCP/IP详细讲解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TCP/IP详细讲解相关的知识,希望对你有一定的参考价值。

三次握手简单地说:

●源主机发送一个同步标志位(SYN)置1的TCP数据段。此段中同时标明初始序号(Initial Sequence Number,ISN)。ISN是一个随时间变化的随机值。  
●目标主机发回确认数据段,此段中的同步标志位(SYN)同样被置1,且确认标志位(ACK)也置1,同时在确认序号字段表明目标主机期待收到源主机下一个数据段的序号(即表明前一个数据段已收到并且没有错误)。此外,此段中还包含目标主机的段初始序号。  
●源主机再回送一个数据段,同样带有递增的发送序号和确认序号。  
至此为止,TCP会话的三次握手完成。接下来,源主机和目标主机可以互相收发数据。


SYN:请求指针,建立连接时将这个值设为1。

ACK:ACK=1是表示确认,ACK=0是确认无效。

FIN:FIN=1表示断开连接。

RST:RST=1表示重新建立TCP连接。

URG:紧急指针有效位。

PSH:此标志位为1时要求接收方尽快将数据段送到应用层。


TCP/IP的三次握手:

假定有两台主机,主机A发送SYN建立连接,此时seq=100,ctl=SYN。主机B接收到后发送SYN=1和ACK=1,此时seq=300,ack=101,ctl=SYN、ACK。主机A接收到主机B的确认后发送ACK,此时seq=101,ack=301,ctl=ACK。如图所示:

技术分享

TCP/IP的四次断开:

主机A发送FIN,请求断开连接,此时seq=101,ack=301,crl=FIN、ACK。主机B知道后发送ACK,此时seq=301,ack=102,ctl=ACK。然而主机B再次发送FIN请求断开连接,此时seq=301,ack=102,ctl=FIN、ACK。同时主机A再次发送ACK,此时seq=102,ack=302,ctl=ACK。

如图所示:

技术分享

TCP/IP的流量控制机制:

假定有主机A和主机B,主机A发送seq=100,win=3.此时主机B的缓冲区是空的,那么主机B就发送seq=300,ack=101,win=3。主机A知道后,发送ack=300,win=3来通报窗口,同时发送三次seq=101、102/103和win=3,就是发送窗口为3。此时主机B箱主机A发送ack=104和win=3,第二次主机A向主机B发送seq=104、win=3,实际第二次发送的窗口变成1了。

如图所示:

技术分享

TCP/IP的拥塞机制:

假定传输的窗口是10,那么win=10,但是在链路带宽较小时,实际窗口根据拥塞窗口cwnd的大小进行调整,即变为5,那么主机A传输到主机B时的seq=100,win=3,。主机B向主机A发送seq=101,ack=101,win=3。主机A就向主机B传送ack=301,win=3,同时传送seq=101,win=3三次,主机B通报窗口大小为3,但是因为中间链路拥塞,丢失数据包,只能收到102的一个确认。那么主机B向主机A发送ack=102,win=3,主机A就重传102,实际的传输窗口就变小了。

如图所示:

技术分享

TCP/IP的重传计时器:

目的是为了控制丢失的字段,首先主机A在发送数据的时候打开重传计时器,等待确认。主机B在重传计时器超时之前接收到主机A发送的数据包,并向主机A发送ACK确认,主机A接收到主机B的确认后撤销计时器,再发送其他的数据。如果重传计时器超时,那么主机A将重传数据并将重传计时器复位开始计时。

如图所示:

技术分享

TCP/IP的坚持计时器:

目的是为了防止零窗口死锁。主机A收到win=0的确认的时候,等待对方发送确认来通知窗口的大小,同时启动坚持计时器。主机B箱主机发送ack和win=0,主机A在坚持计时器超时之前接收到通知窗口的大小的ack确认。主机A发送探测段提醒主机B确认已经丢失,如果没有坚持计时器和探测段,ack丢失时双方将会进入死锁的等待状态。主机A向主机B发送在在坚持计时器没有超时之前的接受到的通知窗口大小。

如图所示:

技术分享

TCP/IP的保活计时器:

目的是防止两个TCP/IP连接之间的长时间空闲。主机A向主机B发送数据后,主机B和主机A就建立了连接,同时主机B开启保活计时器。主机B在保活计时器超时之前没有收到客户端发来的数据。主机B就发送探测数据段,如果发送了10个探测段,还没有响应的时候,就断开了连接。

如图所示:

技术分享

TCP/IP的时间等待计时器:

目的是连接终止期间,当发送了最后一个ACK后,不立即关闭连接,而是等待一段时间,保证可以接收到重复的数据即FIN数据段。当主机A向主机发送FIN时主机B就立即向主机A发送ACK的确认信息,但是主机A不会立即关闭连接而是等到主机B的再一次FIN信息。

如图所示:

技术分享

本文出自 “一个人的世界......” 博客,请务必保留此出处http://deepking.blog.51cto.com/12360960/1929519

以上是关于TCP/IP详细讲解的主要内容,如果未能解决你的问题,请参考以下文章

详细讲解NFS配置过程

TCP/IP高频考点之一个数据包的流浪日记

TCP入门与实例讲解

18 网络编程-TCP/IP各层介绍(5层模型讲解)

TCP/IP四层模型讲解笔记整理通俗易懂版

深入浅出讲解:php的socket通信