HCIE学习记录——数据封装与常用协议(TCP/UDP)


前言

本文主要介绍数据封装过程与常用的协议。

一、数据封装过程

发送数据封装过程

二、传输层协议——TCP、UDP

1.TCP协议

一种面向连接的、可靠的传输层通信协议,由IETF的RFC 793定义。

报文格式

TCP头部
Seq number:序号,表示传输第几个数据段
Ack number:确认号,收到多少数据段
SYN:同步请求,建立连接
ACK:代表收到对方数据段的状态。
FIN:结束,断开连接。

TCP的连接——三次握手

任何基于TCP的应用,电脑需要与服务器进行连接,在发送数据之前,都需要由TCP进行“三次握手”建立连接。
1.请求端PC——>服务器端。SYN置位,请求建立连接。Seq number为产生的随机序号a,Ack number为0(尚未进行连接)。
2.服务器端——>请求端PC。SYN置位,请求建立连接;ACK置位,确认收到请求。Seq number为产生的随即序号b,Ack number为a+1(对方序号+1)。
3.请求端PC——>服务器端。ACK置位,确认收到请求。Seq number为a+1(本地序号+1),Ack number为b+1(对方序号+1)。
TCP连接建立。

第三次传输有什么作用?
答:当网络质量差时,前面的数据段可能会延迟回复,如果没有第三次传输确认,会导致服务器端连接一直打开,造成资源浪费。

TCP的关闭——四次挥手

当数据传输完成,TCP需要通过“四次挥手”机制断开TCP连接,释放系统资源。
1.请求端PC——>服务器端。FIN置位,ACK置位。Seq number为a+1(本地序号+1),Ack number为b+1(对方序号+1)。
2.服务器端——>请求端PC。ACK置位。Seq number为b+1,Ack number为a+2(对方序号+1)。
3.服务器端——>请求端PC。FIN置位,ACK置位。Seq number为b+1,Ack number为a+2(对方序号+1)。
4.请求端PC——>服务器端。ACK置位。Seq number为a+2,Ack number为b+2。
TCP连接断开。

为什么服务器端要分两次传输置位信息呢?
答:第一次传输是确认收到断开连接请求,但是不确定自身是否也要断开连接(保证自身数据段的完整性)。第二次传输则是确认自身也要断开连接。

2.UDP协议

一种简单的无连接的传输层协议,由IETF的RFC 768定义。

报文格式

UDP头部

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值