图1 TCP报文段的首部格式
(1)源端口和目的端口 各占2个字节,分别写入源端口号和目的端口号。
(2)序号 占4个字节。序号范围是[0,2^32-1],共2^32个序号。在一个TCP连接中传送的字节流中的每一个字节都按顺序编号。整个要传送的字节流的起始序号必须在连接建立时设置。首部中的序号字段值则指的是本报文段所发送的数据的第一个字节的序号。
(3)确认号 占4字节,是期望收到对方下一个报文段的第一个数据字节的序号。
(4)数据偏移 占4位,它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。
(5)保留 占6位,保留供今后使用,但是当前应该设置为0。
(6)紧急URG(URGent) 当URG=1时,指示紧急指示域是有效的。它告诉系统,在这个消息中有紧急数据,应当尽快发送(即优先级较高的数据),应舍弃旧的排队序列。
(7)确认ACK(ACKnowlegment) 仅当ACK=1时确认字段才有意义。当ACK=0时,确认号没有用处。
(8)推送PSH(PuSH) 当两个进程进行交互式的通信时,有时在一端的应用进程希望在键入一个命令后就可以立刻接收到来自另一端的呼应。在这样的情景下,TCP即能运用这项推送操作。
(9)复位RST(ReSeT) 当RST=1时,表明TCP在连接过程中出现了重大错误,一定要立刻断开连接,接着再重新创建运输连接。
(10)同步SYN(SYNchronization) 在连接建立时用来将序号同步。当SYN=1而ACK=0时,表明此报文段用于请求连接。对方若同意建立连接,则应在响应的报文段中使SYN=1和ACK=1。
(11)终止FIN(FINis) 用来将连接释放。当FIN=1时,就是指发送该报文段的一方的数据已经全数发完,同时请求将运输连接释放。
(12)窗口 占16位。窗口值作为接收方让发送方设置其发送窗口的依据。文献综述
(13)检验和 占2字节。检验和字段检验的范围包括首部和数据这两部分。
(14)紧急指针 占2字节。紧急指针仅在URG=1时才有意义,它指出本报文段中的紧急数据的字节数(紧急数据结束后就是普通数据)。
(15)选项 长度可变,最长可达40字节。
2。1。3 TCP的连接
TCP把连接作为最基本的抽象。TCP连接的端点叫做套接字(socket)或插口。根据RFC 793的定义:端口号拼接到IP地址即构成了套接字。因此套接字的表示方法是在点分十进制的IP地址后面写上端口号,中间用冒号或逗号隔开。例如,若IP地址是192。3。4。5而端口号是80,那么得到的套接字就是(192。3。4。5:80)。总之,我们有
套接字socket=(IP地址:端口号)
每一条TCP连接唯一地被通信两端的两个端点(即两个套接字)所确定。即: TCP连接::={socket1,socket2}={(IP1:port1),(IP2,:port2)}
2。1。4 TCP的连接建立
图2 用三次握手建立TCP连接
三次握手:
B的TCP服务器进程首先创建一个传输控制块(TCB),准备接受来自客户进程的连接请求。接下来服务器进程即处于LISTEN(收听)状态,等待客户的连接请求。如果有,那么就有所回应。
(1)A的TCP客户进程同样是这样,第一步先建立一个TCB,然后向B发出连接请求报文段,这是首部中的同部位SYN=1,同时选择一个初始序号seq=x。TCP规定,SYN报文段(即SYN=1的报文段)不能携带数据,但要消耗一个序号。这时,TCP客户进程进入SYN-SENT(同步已发送)状态。来`自+优-尔^论:文,网www.youerw.com +QQ752018766- RS-485智能温室大棚监控系统服务端管理设计(3):http://www.youerw.com/zidonghua/lunwen_91149.html