传输层的TCP协议中连接建立,数据传输和链路释放的过程(计算机网络作业)

1.连接建立:

三次握手(前提:服务器必须准备好接受外来的连接,称为被动打开)
TCP是面向连接的,在面向连接的环境中,开始传输数据之前,
在两个终端之间必须先建立一个连接。建立连接同步的过错称为三次握手,
具体过程如下
	(1)当主机A想同主机B建立连接,主机A会发送SYN给主机B,初始化序列号seq=x。
	主机A通过向主机B发送SYS报文段,实现从主机A到主机B的序列号同步,即确定seq中的x。
	(2)主机B接收到报文后,同意与A建立连接,会发送SYN、ACK给主机A。
	初始化序列号seq=y,确认序号ack=x+1。主机B向主机A发送SYN报文的目的是实现从主机B到主机A的序列号同步,即确定seq中的y
	(3)主机A接收到主机B发送过来的报文后,会发送ACK给主机B,确认序号ack=y+1,建立连接完成,传输数据。

2.传输过程 (数据传输)

在建立连接后,TCP将以全双工方式传输数据,在同一时间主机A与主机B之间可以同时进行TCP报文段传输,并对接收到的TCP报文进行确认。具体过程如下:
(1)假设主机A向主机B发送1800字节的数据,主机B向主机A发送1000字节的数据
(2)主机A取seq=8001作为第一个字节的编号(seq不一定从0开始,0-(2^32 - 1)之间的随机数),由于数据长度是1800,字节编号就是8001-9801。同理主机B编号是18001-19000
(3)当对字节编号后,TCP就给每个报文分配一个序号,该序号即这个报文中的第一个字节的编号,在图中主机A数据被拆分两个报文段(主机A限定发送有效值1000字节,所以会分两段发送一个1000字节,一个800字节),因此第一段报文序号是seq=8001,第二段报文序号seq=9001。同理主机B一段报文发送,序号是seq=18001
(4)接收端接收到报文需要进行确认,TCP确认号被定义下一个希望接收到的字节的编号,所以当主机B成功接收到主机A发送的第二段报文时,发现报文的字节编号9001-9800,所以主机B发送给主机A确认序号ack=9801。同理主机A接收到主机B发送的报文字节编号是18001-19000,会给主机B发送确认报文,确认序号ack=19001
(5)报文传输完成,这里主机A最后一次只发送一个ack,代表主机A已经没有数据发送给主机B了。为了提高TCP传输数据效率,接收端主机不会对发送端主机发送的每一段报文都进行报文确认,而是当同时接收到多个报文后再发送确认报文ack。

3.四次分手 (链路释放)

	第一次挥手: A发送一个FIN(连接释放请求),用来关闭A方到B方的数据传送,也就是A告诉B我不会再给你发送数据了,但此时B还可以接受数据。此时A进入FIN_WAIT状态。FIN=1,表示释放连接。seq=u,u-1表示确认的最后一个数据序号。
	第二次挥手: B收到FIN(连接释放请求)后,发送一个ACK(应答响应)给对方,确认序号为收到序号+1;此时B进入CLOSE_WAIT状态。ACK=1:除TCP连接请求报文段以外,TCP通信过程中所有数据报的ACK都为1,表示应答。seq= v:v-1是B向A发送的最后一个字节的序号。ack=u+1表示希望收到从第u+1个字节开始的报文段,并且已经成功接收了前u个字节。
	第三次挥手: B发送一个FIN(连接释放请求),用来关闭B到A的数据传送, B便进入LAST-ACK状态。
	第四次挥手: A收到FIN(连接释放请求)后,向B发送ACK确认应答,此时A进入TIME-WAIT状态。完成第四次挥手。
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值