首页 > 其他 > 详细

TCP/IP

时间:2019-05-29 19:41:03      阅读:128      评论:0      收藏:0      [点我收藏+]

TCP/IP

TCP/IP 意味着 TCP 和 IP 在一起协同工作。

TCP 负责应用软件(比如你的浏览器)和网络软件之间的通信。

IP 负责计算机之间的通信。

TCP 负责将数据分割并装入 IP 包,然后在它们到达的时候重新组合它们。

IP 负责将包发送至接受者。

TCP传输控制协议是面向连接的可靠的传输层协议,在进行数据传输之前,需要在传输数据的两端(客户端和服务器端)创建一个连接,这个连接由一对插口地址唯一标识,即是在IP报文首部的源IP地址、目的IP地址,以及TCP数据报首部的源端口地址和目的端口地址。TCP首部结构如下:

 

技术分享图片

 

注意:通常情况下,一个正常的TCP连接,都会有三个阶段:1、TCP三次握手;2、数据传送;3、TCP四次挥手

其中在TCP连接和断开连接过程中的关键部分如下:

源端口号:即发送方的端口号,在TCP连接过程中,对于客户端,端口号往往由内核分配,无需进程指定;

目的端口号:即发送目的的端口号;

序号:由发送端生成,接收端使用;当SYN标志位1,这个序号在发送端随机生成,并且发送端在接着收到的报文中,截取到的确认序号=序号+1

确认序号:在收到对方发来的数据报,当ACK标志为1,这个序号生效。这个确认序号要 跟 期待收到的序号 一致,才能整体消息生效;

4位数据偏移:4位包括TCP头大小,指示数据从何处开始。

保留(6位):位0,为了将来定义新的用途而保留。

标志:6位标志域。表示为:紧急标志、有意义的应答标志、推、重置连接标志、同步序列号标志、完成发送数据标志。

    按照顺序排列是:URG、ACK、PSH、RST、SYN、FIN。对应的位的数值为 “1” ,表示该标志有效。

    URG:紧急标志。紧急标志位为"1"表明该位有效。

    ACK:Acknowledgement Number,确认标志。表明 确认序号 那一栏的数据有效。大多数情况下该标志位是置位的(为 1)。

        TCP报头内的确认编号栏内包含的确认编号(w+1)为下一个预期的序列编号,同时提示远端系统已经成功接收所有数据。

    SYN:同步序号标志,Synchronize Sequence Numbers;表明同步序列编号栏有效(就是 序号 那一栏)。

        该标志仅在三次握手建立TCP连接时有效。

        它提示TCP连接的服务端去检查序列编号,该序列编号为TCP连接初始端(一般是客户端)的初始序列编号。  

    PSH:传送数据标志。

    FIN:结束标志,FINish;

    RST=RESET,异常关闭连接。

16位窗口大小:用来表示想收到的每个TCP数据段的大小。TCP的流量控制由连接的每一端通过声明的窗口大小来提供。

        窗口大小为字节数,起始于确认序号字段指明的值,这个值是接收端正期望接收的字节。窗口大小是一个16字节字段,因而窗口大小最大为65535字节。

16位校验和:16位TCP头。源机器基于数据内容计算一个数值,收信息机要与源机器数值 结果完全一样,从而证明数据的有效性。

        检验和覆盖了整个的TCP报文段:这是一个强制性的字段,一定是由发送端计算和存储,并由接收端进行验证的。

16位紧急指针:指向后面是优先数据的字节,在URG标志设置了时才有效。如果URG标志没有被设置,紧急域作为填充。加快处理标示为紧急的数据段。

选项:长度不定,但长度必须大于1个字节。如果没有选项就表示这个1字节的域等于0。

数据:该TCP协议包负载的数据。

 技术分享图片               三次握手 、四次挥手

 技术分享图片

 

TCP/IP

原文:https://www.cnblogs.com/chenpython123/p/10945485.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!