当前位置: 首页 > article >正文

网络协议头分析

目录

数据的传输与封装过程

以太网完整帧

以太网头部

IP头

TCP头

数据的传输与封装过程

以太网完整帧

对于网络层最大数据帧长度是1500字节

对于链路层最大数据长度是1518字节(1500+14+CRC)
发送时候,IP层协议栈程序检测到发送数据和包头总长度超过1500字节时候,会进行自动分包处理,接收端在IP层进行包重组,然后才继续往上传递

以太网头部

IP头

TCP头

Src: 源

Dst:目标

Seq:序列号

Ack:应答号(应答包的应答号)

数据包:

A:ACK:应答包

S:SYN:握手包(同步包),连接时产生

P:PSH:(PUSH)数据包,传输数据产生

F:FIN:挥手包,断开连接时产生

UDP头

UDP不会造成粘包和拆包, TCP不会造成丢包

UDP是基于数据报文发送的,每次发送的数据包,在UDP的头部都会有固定的长度, 所以应用层能很好的将数据包分隔开, 不会造成粘包。

UDP不会造成拆包, 但会出现拆包, 这个拆包是在网络层的IP头进行的拆包(判断MTU)。

TCP是基于字节流的, 每次发送的数据报,在TCP的头部没有固定的长度限制,也就是没有边界,那么很容易在传输数据时,把多个数据包当作一个数据报去发送,成为了粘包,或者传输数据时, 要发送的数据大于发送缓存区的大小,或者要发送的数据大于最大报文长度, 就会拆包;

TCP不会丢包,因为TCP一旦丢包,将会重新发送数据包。(超时/错误重传)

为什么UDP会造成丢包:

UDP通信没有发送缓存区, 它不保证数据的可靠性。因此,UDP通信是将数据尽快发送出去,不关心数据是否到达目标主机. 但是UDP有接受缓存区, 因为数据发送过快, 如果接收缓存区内数据已满, 则继续发送数据, 可能会出现丢包。

丢包出现原因: 接收缓存区满 网络拥堵, 传输错误


http://www.kler.cn/a/308666.html

相关文章:

  • Dockerfile的使用
  • 软件工程师简历(精选篇)
  • 【计算机网络】UDP网络程序
  • MoneyPrinterTurbo – 开源的AI短视频生成工具
  • 什么岗位需要学习 OpenGL ES ?说说 3.X 的新特性
  • C++初阶:类和对象(上)
  • 【PostgreSQL-patroni维护命令】
  • 基于vue框架的宠物寄养系统3d388(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
  • USB开启ADB设置流程
  • 麒麟操作系统 MySQL 主从搭建
  • Qt QDialog点击界面自动激活问题解决办法
  • 枚举类题目练习心得
  • Golang | Leetcode Golang题解之第403题青蛙过河
  • 【题解】CF2009G1
  • QtC++截图支持获取鼠标光标
  • 运维工程师面试整理-虚拟化与容器
  • 实时数仓3.0DWD层
  • vulnhub(7):Toppo(经典的suid滥用提权)
  • ArcGIS Pro SDK (十四)地图探索 1 地图视图
  • 探索 InternLM 模型能力边界
  • 什么是外贸专用路由器?
  • 后端开发 每天六道面试题之打卡第一天
  • python中的各类比较与计算
  • Android14 蓝牙 BluetoothService 启动和相关代码介绍
  • 【Vue】- 生命周期和数据请求案例分析
  • phpstudy 建站使用 php8版本打开 phpMyAdmin后台出现网页提示致命错误:(phpMyAdmin这是版本问题导致的)