网络协议头分析

server/2025/1/16 13:59:01/

目录

数据的传输与封装过程

以太网完整帧

以太网头部

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.ppmy.cn/server/116413.html

相关文章

git使用基础教程

(一)Git下载 git官网 - downloads 创建本地数据仓 1.创建文件夹 2.当前目录 cmd ---git init gitee.com注册登录 git创建项目 ide 项目地址本地数据库 ide项目上传云端 (一)git 1.git下载 2.新建仓库 3. 配置Configure---Version Control---Git----path to Git Get from…

【iOS】push和present的区别

【iOS】push和present的区别 文章目录 【iOS】push和present的区别前言pushpop presentdismiss简单小demo来展示dismiss和presentdismiss多级 push和present的区别区别相同点 前言 在iOS开发中,我们经常性的会用到界面的一个切换的问题,这里我们需要理清…

set并集,交集

我怎么都4了一个月了 我不要打疫苗qwq qwq qwq 言归正传 两个set的交集和并集 //可爱的并集代码 #include<bits/stdc.h> using namespace std; int main(){set <int> a,b;cout<<"请输入a的长度\n";int na,nb;cin>>na>>nb;cout<…

SAP Fiori UI5-环境搭建-2022-2024界面对比

文章目录 一、Fiori项目初始化实际操作第一步&#xff1a;新建文件夹&#xff08;项目文件&#xff09;第二步&#xff1a;打开我们项目第三步&#xff1a;打开终端 部署环境第四步: XML中新增文本 二、 2023年Vscode中Fiori界面三 、2024年Vscode中Fiori界面 一、Fiori项目初始…

springboot3打包成war包,用tomcat8启动

1、在pom中&#xff0c;将打包类型改为war <packaging>war</packaging> 2、pom中排除SpringBoot内置的Tomcat容器并添加Tomcat依赖&#xff0c;用于编译和测试, *依赖时一定设置 scope 为 provided &#xff08;相当于 tomcat 依赖只在本地运行和测试的时候有效&…

一文秒懂ipconfig、ifconfig和ip addr的区别与应用

哈喽大家好&#xff0c;欢迎来到虚拟化时代君&#xff08;XNHCYL&#xff09;。 “ 大家好&#xff0c;我是虚拟化时代君&#xff0c;一位潜心于互联网的技术宅男。这里每天为你分享各种你感兴趣的技术、教程、软件、资源、福利…&#xff08;每天更新不间断&#xff0c;福利…

Redis地理数据类型GEO

通常要计算两个地理位置的距离不是很方便&#xff0c;这里可以直接通过Redis提供的GEO操作来完成地理位置相关的计算 1&#xff09;添加地理位置 语法&#xff1a;geoadd key longitude latitude member [longitude latitude member] ...字段说明&#xff1a;key&#xff1a;…

Uniapp基础学习(二)

uni-app怎么用&#xff1f;和vue对比记忆一文教会你_uniapp vue-CSDN博客 一、项目结构解读 uni-app项目的结构通常包括以下几个部分&#xff1a; pages&#xff1a;存放项目页面的目录&#xff0c;每个页面通常由.vue文件、.js文件、.json文件等组成。components&#xff1…