自己动手实现TCP/IP--tcp协议通信(一)

22 篇文章 3 订阅

一、介绍
tcp/ip协议栈要深入理解,最好的方式就是自己写一遍基础的协议,这里以传输层的tcp为例介绍实现过程
tcp特点
提供了完善的错误控制和流量控制,能够确保数据正常传输,是一个面向连接的协议,建立连接通道,数据大小无限制速度慢,但是可靠性高

二、整体框架
在这里插入图片描述
此图片 来源于网络
要实现tcp通信,必须实现tcp本身传输层,以及下面的网络层ip以及数据链路

三、tcp协议帧框架
在这里插入图片描述
图片来源网络

四、各层协议格式

1、数据链路层
以太网头
在这里插入图片描述
2、网络层
ip头
在这里插入图片描述
3、传输层
tcp头
在这里插入图片描述
4、arp
在这里插入图片描述
5、ICMP
在这里插入图片描述

6、ping
在这里插入图片描述

五、通信机制
1、通信的建立和关闭机制
建立通信
在这里插入图片描述
此图片来源网络
(1)客户端请求连接,发送一条报文syn=1,seq=J,J是一个随机数,然后进入等待连接状态
(2)服务端收到请求以后,确认收到请求发一个条报文,syn=1,ack=1,seq=J+1,seq=K,然后进入等待连接状态
(3)客户端收到确认请求后,发送一条报文ACK=1,ack=K+1,进入监听状态,服务端收到报文后,也进入监听状态,然后就可以收发数据了

这个过程简称三次握手

关闭通信
在这里插入图片描述
此图片来源网络

(1)客户端请求断开客户端到服务端的发送,发送一条报文fin=M,M是一个随机数,然后进入等待断开状态
(2)服务端收到断开请求以后,确认收到请求发一个条报文,ack=M+1,然后进入等待端口状态
(3)服务端请求断开服务端到客户端的发送,发送一条报文fin=N,进入最后应答状态
(4)客户端收到服务端请求断开请求后,确认收到请求,发送一条报文ACK=1,ack=N+1,进入等待超时状态,服务端收到后会关闭连接状态

这个过程简称四次挥手

2、慢启动机制
原因:tcp如果直接满负荷发送会导致路由器过热,从而导致丢包,所以有了慢启动机制
原理:发送方一次发10个包等接收方确认消息,然后再继续发送;接收方默认每2个包会回复一个确认消息;在没有丢包的情况下会逐渐增加发送包的大小,否则减小发送包的大小
确认消息内容:
(1)期待要收到下一个数据包的编号
(2)接收方的接收窗口的剩余容量
在这里插入图片描述
此图片来源网络

3、数据丢包处理
此图片来源于网络此图片来源于网络

发送方发送数据包以后,接收方会回复一下一个数据包的编号,如果中间丢了一包数据,那么接收方回复的编号将不会发发生变化
丢包确认:
(1)收到三次相同的ack
(2)超时没有收到ack
触发重新发送丢失的数据包

待更新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值