系列TCP/IP协议-TCP协议概述(011)

栏目: 服务器 · 发布时间: 7年前

内容简介:TCP协议(Transmission Control Protocol 传输控制协议)不同于UDP协议,它是一个面向连接(一对一)的,可靠(做了差错控制)的字节流(不限长度)服务。TCP的可靠性通过下面方式来控制:TCP数据包是封装在IP数据包中的TCP首部,如果不计算任选字段,通常为20个字节。

TCP协议(Transmission Control Protocol 传输控制协议)不同于UDP协议,它是一个面向连接(一对一)的,可靠(做了差错控制)的字节流(不限长度)服务。TCP的可靠性通过下面方式来控制:

  • 将应用数据分割成TCP认为最合适长度的数据块。减少IP层的分片现象的发生。
  • 当TCP发送一份数据包后,它启动一个定时器,等待目的端确认收到这份数据包。如果不能及时收到一个确认,将重发该数据包。确定对方收到数据了。
  • 当TCP接收端收到一个数据包时候,会发送一份确认数据包。告诉对方已经收到数据了。
  • TCP将对它的首部和数据部分做校验和。防止传输中出错。
  • TCP会对收到的数据进行排序,按照正确的顺序提交给应用。
  • TCP会抛弃重复的数据。
  • TCP还能提供流量控制。TCP连接的每一方都有固定大小的缓冲空间。

二、TCP数据包结构

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

系列TCP/IP协议-TCP协议概述(011)

TCP首部,如果不计算任选字段,通常为20个字节。

系列TCP/IP协议-TCP协议概述(011)
  • 每个TCP段都包含源端和目的端的端口号。
  • 序号用来标识从TCP发端向TCP收端发送的数据字节流,它表示在这个报文段中的的第一个数据字节。序号字段包含由这个主机选择的该连接的初始序号ISN(Initial Sequence Number)。
  • 既然每个传输的字节都被计数,确认序号包含发送确认的一端所期望收到的下一个序号。
  • 首部长度给出首部中32bit(一个字,两个字节)的数目。长度为4bit。需要这个值是因为任选字段的长度是可变的。
  • 在TCP首部中有6个标志比特。
    • URG:紧急指针( urgent pointer)有效。
    • ACK:确认序号有效。
    • PSH:接收方应该尽快将这个数据包交给应用层。
    • RST:重新建立连接。
    • SYN:同步序号用来发起一个连接。只有在三次握手的时候才会有。
    • FIN:发送端完成发送任务。只有在结束时候才有。
  • 窗口大小:TCP的流量控制由连接的每一端通过声明的窗口大小来提供。窗口大小为字节数,起始于确认序号字段指明的值,这个值是接收端正期望接收的字节。
  • 检验和:覆盖了整个的 TCP数据包。
  • 紧急指针:当URG标志置1时紧急指针才有效。紧急指针是一个正的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。
  • 最常见的可选字段是最长报文大小,又称为 MSS(Maximum Segment Size)。

都看到这里了,要不要扫二维码关注一下微信公众号 林湾村龙猫

系列TCP/IP协议-TCP协议概述(011)

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

写给大忙人看的C++

写给大忙人看的C++

【美】Brian Overland(布莱恩.奥弗兰德) / 卢涛、李颖 / 电子工业出版社 / 2015-8 / 109.00

《写给大忙人看的C++》全面介绍了C++语言知识,既提供了学习C++语言最新功能的捷径,也为快速找到特定问题的答案提供了便利。《写给大忙人看的C++》简明地描述了C++核心语言和标准库中几乎所有的函数、对象和运算符,一目了然地显示了语法、结构和重要函数的信息,内容组织形式便于快速查找信息。《写给大忙人看的C++》精选了实用的例子来深入地讲解概念,还提供了富有挑战性的练习及参考答案,便于读者举一反三......一起来看看 《写给大忙人看的C++》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

SHA 加密
SHA 加密

SHA 加密工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具