美文网首页
第17/18章 TCP:概述、连接建立和终止

第17/18章 TCP:概述、连接建立和终止

作者: yulongsun | 来源:发表于2016-09-01 14:00 被阅读35次

    1、 概述

    • TCP提供一种面向连接的可靠的字节流服务。全双工通信。
    • 一个TCP连接由一个四元组唯一确定:本地IP,本地IP端口,远程IP,远程IP端口
    • TCP将用户数据打包构成报文段,发送数据后启用一个定时器,另一端对收到的数据进行确定,对失序的数据进行重新排序,丢弃重复的数据;TCP提供端到端的流量控制,并计算和验证一个强制性的端到端检验和。许多流行的应用层程序如:Telnet,Rlogin,FTP,SMTP都使用TCP。

    ** TCP依靠以下方式来提供可靠性:**
    超时重发。主要不得到确认,就重新发送数据报,知道对方确认为止。


    2. TCP首部

    TCP数据被放在一个IP数据包中,如图:

    TCP数据在IP数据包中的封装

    下图为TCP首部的数据格式。如果不计任选字段,通常为20个字节。

    TCP首部数据格式
    • 源端口和目的端口:用于寻找发端和收端的应用进程。
    • 序号seq:标示从TCP发端向TCP收端发送的数据字节楼。4B,序号范围是[0,2^31-1]。
    • 确认序号:
    • 首部长度:
    • 保留:
    • 6个标志比特:紧急URG、确认比特ACK、推送比特PSH、复位比特RST、同步比特SYN、终止比特FIN
    • 窗口:
    • 检验和:
    • 紧急指针:
    • 选项:

    3. TCP连接的建立

    TCP连接建立-三次握手

    三次握手过程如下

    1. 第一次握手:建立连接,客户端A发送SYN包(seq=x)到服务器,并进入SYN_SEND状态,等待服务器B确认。
    2. 第二次握手:服务器收到SYN包,必须确认客户端A的SYN包(ack=x+1),同时自己也发送一个SYN包(seq=y),即SYN+ACK包。此时服务器进入SYN_RECV状态。
    3. 第三次握手:客户端A收到服务器B的SYN+ACK包,向服务器B发送确认包ACK(ack=y+1),此包发送完毕,客户端A
      和服务器端B都进入ESTABLISHED状态,完成三次握手。
      完成三次握手,客户端与服务器端开始传送数据。

    4.TCP连接的断开

    TCP连接的终止

    四次挥手过程如下:

    1. 连接的一个A的某个应用程序首先调用close,执行主动关闭。他的TCP发送一个FIN分节,表示数据发送完毕;
    2. 接受的到的这个FIN分节的对端B执行被动关闭,并由其TCP确认这个FIN(向A发送确认)。然后将这个FIN作为文件结束符发送给他自身的应用进程;
    3. 一点时间后(中间有个close-waite),B调用close关闭套接字,并由其TCP发送一个FIN给A;
    4. 接受到这个FIN的A端TCP发送ACK确认这个FIN;

    彩蛋:

    • TCP连接为什么不是二次也不是四次?

    三次握手:
    “喂,你听得到吗?”
    “我听得到呀,你听得到我吗?”
    “我能听到你,今天balabala……”

    两次握手:
    “喂,你听得到吗?”
    “我听得到呀”
    “喂喂,你听得到吗?”
    “草,我听得到呀!!!!”
    “你TM能不能听到我讲话啊!!喂!”
    “……”

    四次握手:
    “喂,你听得到吗?”
    “我听得到呀,你听得到我吗?”
    “我能听到你,你能听到我吗?”
    “……不想跟傻逼说话”

    作者:匿名用户
    链接:https://www.zhihu.com/question/24853633/answer/114872771
    来源:知乎
    著作权归作者所有,转载请联系作者获得授权。

    • 三次握手 四次挥手流程如下:
    整个流程
    • 参考:

    TCP协议中的三次握手和四次挥手(图解)
    《TCP/IP详解》学习笔记-第17/18章 TCP:概述、连接建立与终止

    相关文章

      网友评论

          本文标题:第17/18章 TCP:概述、连接建立和终止

          本文链接:https://www.haomeiwen.com/subject/kjicettx.html