• 热门搜索:
  • 装机系统
  • 雨林木风系统
  • 深度系统
  • 电脑公司系统
  • win7装机版
  • 教程分类
    当前位置:主页 > 教程咨询 > Linux教程

    TCP协议图文详解

    来源:装机员┆发布时间:2018-10-09 06:00┆点击:

    装机员为您提供TCP协议图文详解的文章咨询供您阅读,如何使用TCP协议图文详解的方法对您有帮助也请您举手之劳分享给您身边的人。

    TCP是TCP/IP体系中非常复杂的一个协议,TCP最主要的特点有:

    1.TCP是面向连接的运输层协议。应用程序在使用Linux/19621.html">TCP协议之前,必须先建立TCP连接。在传递数据完毕后,必须释放已建立的TCP连接。

    2.每一条TCP连接只能有两个端点,只能说点对点的。

    3.TCP提供可靠交付的服务,通过TCP连接传送的数据,无差错,不丢失,不重复,并且按序到达。

    4.TCP提供全双工通信。TCP允许通信双方的应用进程在任何时候都能发送数据。TCP连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据。

    5.面向字节流。TCP中的“流”指的是流入到进程或从进程流出的字节序列。“面向字节流”的含义是:虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序交下来的数据看成仅仅是一连串的无结构的字节流。TCP并不知道所传送的字节流的含义。TCP不保证接收方应用程序所收到的数据块和发送方应用程序所发出的数据块具有对应大小的关系。但接收方应用程序收到的字节流必须和发送方应用程序发出的字节流完全一样。当然,接收方的应用程序必须有能力识别收到的字节流,把它还原成有意义的应用层数据。

    TCP协议图文详解

    TCP报文段先要传到IP层,加上IP首部后,再传送到数据链路层。再加上数据链路层的首部和尾部,才离开主机发送到物理链路。

    a.TCP和UDP在发送报文时所采用的方式完全不同。TCP并不关心应用程序一次把多长的报文发送到TCP缓存中,而是根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段应包含多少个字节(UDP发送的报文长度是应用程序给出的)。

    b.如果应用程序传送到TCP缓存的数据块太大,TCP就可以把它划分短一些再传。TCP也可以等待积累有足够多的字节后再构建成报文段发送出去。

    二:TCP包头格式

    TCP协议重定解决的问题:

    顺序问题,稳重不乱;丢包问题,承诺靠谱;连接维护,有始有终;流量控制,把握分寸;拥塞控制,知进知退。

    TCP协议图文详解

    TCP把连接作为最基本的抽象,每个TCP连接有两个端点。TCP连接的端口叫做套接字,端口号拼接到IP地址即构成了套接字(如:192.3.4.5:80)。

    1.源端口号和目标端口号是不可少的,装机系统,这一点和UDP是一样的,如果没有这两个端口号,数据就不知道应该发送给哪个应用。

    2.包的序号:为了解决乱序的问题

    3.确认序号:发出去的包应该有确认,如果没有收到就应该重新发送,直到送达,这个可以解决不丢包的问题

    4.状态位:ACK是回复,RST是重新连接,FIN是结束连接。

    三:TCP连接三次握手

    TCP协议图文详解

    1.一开始,客户端和服务端都处于CLOSED状态

    2.先是服务端主动监听某个端口,处于LISTEN状态

    3.客户端主动发起连接SYN,之后处于SYN-SENT状态

    4.服务端收到发起的连接,返回SYN,并且ACK客户端的SYN,之后处于SYN-RCVD状态

    5.客户端收到服务端发送的SYN和ACK之后,发送ACK的ACK,之后处于ESTABLISHED状态。

    6.服务端收到ACK的ACK之后,处于ESTABLISHED状态。

    四:TCP连接释放四次挥手

    TCP协议图文详解

    1.当前A和B都处于ESTAB-LISHED状态。

    2.A的应用进程先向其TCP发出连接释放报文段,并停止再发送数据,主动关闭TCP连接。

    3.B收到连接释放报文段后即发出确认,然后B进入CLOSE-WAIT(关闭等待)状态。TCP服务器进程这时应通知高层应用进程,因而从A到B这个方向的连接就释放了,这时TCP连接处于半关闭状态,即A已经没有数据发送了。

    从B到A这个方向的连接并未关闭,这个状态可能会持续一些时间。

    4.A收到来自B的确认后,就进入FIN-WAIT-2(终止等待2)状态,等待B发出的连接释放报文端。

    5.若B已经没有向A发送的数据,B发出连接释放信号,这时B进入LAST-ACK(最后确认)状态等待A的确认。

    6.A再收到B的连接释放消息后,必须对此发出确认,然后进入TIME-WAIT(时间等待)状态。请注意,现在TCP连接还没有释放掉,必须经过时间等待计时器(TIME-WAIT timer)设置的时间2MSL后,A才进入CLOSED状态。

    7。B收到A发出的确认消息后,进入CLOSED状态。

    五:TCP状态机

    TCP协议图文详解

    一.以字节为单位的滑动窗口

    TCP协议图文详解

    在TCP里,接收端(B)会给发送端(A)报一个窗口的大小,叫Advertised windowsdow。

    1.在没有收到B的确认情况下,A可以连续把窗口内的数据都发送出去。凡是已经发送过的数据,在

    未收到确认之前都必须暂时保留,以便在超时重传时使用。

    2.发送窗口里面的序号表示允许发送的序号。显然,窗口越大,发送方就可以在收到对方确认之前连续

    发送更多数据,因而可能获得更高的传输效率。但接收方必须来得及处理这些收到的数据。

    3.发送窗口后沿的后面部分表示已发送且已收到确认。这些数据显然不需要再保留了。

    4.发送窗口前沿的前面部分表示不允许发送的,应为接收方都没有为这部分数据保留临时存放的缓存空间。

    5.发送窗口后沿的变化情况有两种:不动(没有收到新的确认)和前移(收到了新的确认)

    6.发送窗口前沿的变化情况有两种:不断向前移或可能不动(没收到新的确认)

    二.超时重传时间的选择

    TCP的发送方在规定时间内没有收到确认就要重传已发送的报文段。这种重传的概念很简单,但重传时间的选择

    确是TCP最复杂的问题之一。TCP采用了一种自适应算法,它记录一个报文段发出的时间,以及收到相应的确认的时间

    这两个时间之差就是报文段的往返时间RTT。TCP保留了RTT的一个加权平均往返时间。超时重传时间RTO略大于加权平均往返时间。

    TCP协议图文详解

    三:选择确认SACK

    TCP协议图文详解

    如果收到的报文段无差错,只是未按序号,中间还缺少一些序号的数据,那么能否设法只传送缺少的数据而不重传已经正确到达接收方的数据?

    答案是可以的,选择确认就是一种可行的处理方法。


    以上就是装机员给大家介绍的如何使用TCP协议图文详解的方法了,如何使用TCP协议图文详解的方法到这里也全部结束了相信大家对如何使用TCP协议图文详解的方法都有一定的了解了吧,好了,如果大家还想了解更多的资讯,那就赶紧点击装机员系统官网吧。

    本文来自装机员www.zhuangjiyuan.com如需转载请注明!

    Tag标签| RSS订阅 | 网站地图
    装机员系统之家提供win7装机版xp系统下载win7系统下载、最新Windows10系统下载,专为装机修机员奉上最好的软件、系统、U盘pe、程等平台
    请勿发布违反国家法律法规的内容,会员观点不代表本站立场.本站发布的系统与软件仅为个人学习测试使用,请在下载后24小时内删除,不得用于任何商业用途,
    否则后果自负,请支持购买微软正版软件! 如侵犯到您的权益,请及时通知我们,我们会及时处理。 粤ICP备15116662号