TCP简介

 

TCP相关背景知识

传输控制协议(Transmission Control Protocol,TCP)是一种面向连接的、可靠的、基于字节流的运输层通信协议。在简化的计算机网络OSI模型中,它完成运输层所指定的功能。TCP提供一种面向连接的、可靠的字节流服务。

TCP是因特网中的传输层协议,使用三次握手协议建立连接。当主动方发出SYN连接请求后,等待对方回答SYN,ACK。这种建立连接的方法可以防止产生错误的连接,TCP使用的流量控制协议是可变大小的滑动窗口协议。第一次握手:建立连接时,客户端发送SYN包(SEQ=x)到服务器,并进入SYN_SEND状态,等待服务器确认。第二次握手:服务器收到SYN包,必须确认客户的SYN(ACK=x+1),同时自己也送一个SYN包(SEQ=y),即SYN+ACK包,此时服务器进入SYN_RECV状态。第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ACK=y+1),此包发送完毕,客户端和服务器时入Established状态,完成三次握手。

TCP传输过程如图1所示

图 1

当应用进程有报文需要通过TCP发送时,它就将此应用层报传送给执行TCP协议的传输实体。TCP传输实体将用户数据加上TCP报头,形成TCP数据包,在TCP数据包上增加IP头部,形成IP包。

TCP协议的数据传输单元称为报文段,其格式如图2所示。报文段报头的长度为20B~60B。其中固定长度是20B,选择部分长度最多为40B。

TCP数据包加上IP包报头形成IP包,如图2所示

图 2

3.2 数据报格式

3.2.1 TCP数据报报头格式

   TCP报文段数据结构如图3所示

 

图 3

TCP报文段主要包括以下字段:

·端口号:端口号字段包括源端口号和目的端口号。每个端口号的长度是16位,分别表示发送该TCP包的应用进程的端口号和接受该TCP包的应用进程的端口号。

·序号:长度为32位。由于TCP协议是面向数据流的,它所传送的报文段可以视为连续的数据流,因此需要给每个字节一个字节编号。序号字段的“序号”指的是本报文段数据的第一个字节的顺序号。

·确认号:该字段的长度为32位,它表示接收端希望接收的下一个TCP包的第一个字节的序号。

·报头长度:该字段长度为4位。TCP报头长度是以4B为一个单元来计算的,实际上报头长度在20B~60B之间。因此这个字段的值在5~15之间。

·保留:长度为6位,留作今后使用,目前全部置0。

·控制:这个字段定义了6种不同的标志,每个标志占一位,在同一时间可以设置一位或多位。URG位为1时,表明应尽快把数据传送给应用程序,否则表明允许数据在缓存中存放一段时间。RST位为1时,表明要强制切断连接。SYN位为1时,表明有确立连接的请求,这时,把序号字段的初始值作为序号字段的值,以便开始通信。FIN位为1时,表明发送方已经没有数据发送了。

·窗口大小:长度为16位,窗口对应的数据是以字节为单位的数据,因此最多能够传送的数据为65535B。

·紧急指针:该字段长度为16位,指向必须紧急处理的数据的位置,只有当标志URG=1时,紧急指针才有效。从TCP报头后面的报文数据开始,到紧急指针所指出长度的数据,就是必须紧急处理的数据。

·选项:该字段可以多达40B,包括单字节选项和多字节选项。

·校验和:该字段长度为16位,校验和的校验范围包括伪头部,TCP报头以及应用层来的数据。其计算方法和IP协议头部校验和的计算方法一样。伪头部为12B,它本身并不是他、TCP数据包的真正头部,只是在计算校验和时,临时和TCP数据包连接在一起。

IP数据报格式

IP数据包数据结构如图4所示:

图  4

    本课程设计要求用命令行将IP地址和端口(Port)填充到数据包的相应字段,IP地址则填充到IP数据包的源地址或者目的地址字段。

IP数据报包含以下各个字段:

·版本:用来表明建立数据报的IP版本,IPv4的字段为0100;

·首部长度:占4比特字段,因此首部最长为60个字节;

·服务类型:TOS;

·总长度:总长度字段是指整个I P数据报的长度,以字节为单位.由于该字段长16比特,所以I P数据报最长可达65535字节;

·标识:当前数据包;

·标志:标志数据包是否可拆分以及是否拆分后的数据包的最后一部分等信息;

·片偏移:用于指定分段在原始数据报中的位置;

·生存时间:8比特,用于指定数据报允许保留在网络上的时间;

·协议:8比特,用于指定数据报数据区中携带的消息是由哪种高级协议建立的。ICMP为1,TCP为6,UDP为17;

·首部检验和:16比特,仅用于IP报头校验和;

·源地址:源IP地址;

·目的地址:目的IP地址;

·选项、可选字段:填充字段用于确保将选项字段填充为最少32个比特位,以保证IP报头以32位结束;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值