TCP

TCP(Transmission Control Protocol)

面向连接的,可靠的,基于字节流的传输层通信协议

 

特点

基于连接的:数据传输之前需要建立连接

全双工的:双向传输

字节流:不限制数据大小,打包成报文段,保证有序接收,重复报文自动丢弃

流量缓冲:解决双方处理能力的不匹配

可靠的传输服务:保证可达,丢包时通过重发机制实现可靠性

拥塞控制:防止网络出现恶性拥塞

 

报文格式

源端口:是发送端随机生成的一个端口号

目的端口:接受端的端口号 默认情况是80

序列号: 用于3次握手4次挥手

应答编号: 用于3次握手4次挥手

报文标识:

  1)URG:紧急指针标志,为1时表示紧急指针有效,为0则忽略紧急指针。

  2)ACK:确认序号标志,为1时表示确认号有效,为0表示报文中不含确认信息,忽略确认号字段。

  3)PSH:push标志,为1表示是带有push标志的数据,指示接收方在接收到该报文段以后,应尽快将这个报文段交给应用程序,而不是在缓冲区排队。

  4)RST:重置连接标志,用于重置由于主机崩溃或其他原因而出现错误的连接。或者用于拒绝非法的报文段和拒绝连接请求。

  5)SYN:同步序号,用于建立连接过程,在连接请求中,SYN=1和ACK=0表示该数据段没有使用捎带的确认域,而连接应答捎带一个确认,即SYN=1和ACK=1。

  6)FIN:finish标志,用于释放连接,为1时表示发送方已经没有数据发送了,即关闭本方数据流。

receive window:缓存窗口大小

urgent data pointer:紧急处理的指针

options:可选参数

data:业务数据 比如http的报文数据

 

TCP三次握手

1、客户端发送SYN类型的报文请求,并且携带序列号为X,客户端状态由关闭变成发送状态;

2、服务端收到SYN的报文请求,返回一个ACK应答的报文,序列号为客户端报文的序列号X+1;并且发送了一个SYN的连接请求,报文序列号为Y;

3、客户端收到ACK应答并且拿到序列号-1知道自己是哪次的请求,并且收到了服务端SYN的请求,拿到序列号Y后,对服务端进行ACK的应答请求,序列号为Y+1;

4、服务端拿到ACK请求序列号-1;得到自己是哪次请求;

5、双方建立了连接;并且入accept队列;后续传递数据可以通过accept队列传输;

 

TCP四次挥手

A: 发送FIN数据包,代表A不在发送数据

B: 收到请求,开始应答 ,避免了A重新发送FIN重试(应答机制)

B: 处理完数据之后关闭,关闭连接,及发送FIN请求

A: 收到请求后发送ACK应答,B服务可以释放连接

图示

https://www.processon.com/view/link/607fb0f4e401fd2d66ae3b76

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值