TCP,UDP,IP,数据链路层头部详解
UDP头部
可以看到UDP头部由(源端口)、(目的端口)、(长度)跟(校验和)组成,总共8字节。
源端口:发送方的端口号,16位,即2字节。
目的端口:接收方的端口号,16位,即2字节。
长度:头部+数据的字节数,16位,即2字节。
校验和:此字段用来校验数据是否出错。
UDP最小长度:即无数据的情况下,仅首部长度8字节。
UDP数据部分最小长度:即无数据的情况下,0字节。
UDP最大长度:因长度字段16位限制,所以最大长度为216-1=65535字节。
UDP数据部分最大长度:即UDP最大长度-IP最小头部-UDP头部,216-1-20-8=65507字节
TCP头部
TCP为保证数据的可靠传输,自然多了很多东西。
源端口:16位,2字节。
目的端口:16位,2字节。
序号:此报文的序号[1],可用于确认。
确认号:用于确认序号[1]。
数据偏移:数据部分往后偏移,这是TCP的头部长度字段,代表有多少个32bit,即1代表32bit,2代表64bit。
一共4位最大为15,15×32=480b=60B。所以头部最大为60个字节,最小为20字节。
(此字段与图中选项字段相关联)接下来是保留字段,未使用。
下面是6位用于TCP通信的字段,相应位置1表示特殊的信号。比如典型的SYN、FIN和ACK用于三次握手和四次挥手[2]。
窗口:用于拥塞控制,接收方可以控制发送方发送数据报文的吞吐量,防止自己太忙来不及接收。
校验和:此字段用来校验数据是否出错。
紧急指针:用于发送紧急数据的情况。
选项与填充:TCP头部的长度可以变化,因此可以承载更多的数据。
注意这里必须使用32位的数据,用来快速定位数据部分的位置,所以没有那么多数据的话需要在后面进行填充。
这里与数据偏移字段相关联,这样就可以知道头部的长度以及数据部分的准确位置。
[1]:关于序号和确认号,不是简简单单为数据随意编号,确认号也不是确认数据报文的序号。可以点击这里看我关于TCP序号和确认号的博客
[2]:关于三次握手和四次挥手的细节,可以点击这里看我关于三次握手和四次挥手的博客
IP头部
版本:IP的版本,IPv4或IPv6,4bit。
首部长度:跟TCP头部中的数据偏移意义一致。
区分服务:这是Tos字段,用于Oos服务质量中,这个一两句话也说不完。
总长度:顾名思义,指整个数据报的长度(以字节为单位)。占16bit,最大长度为65535字节。
标识:用来唯一地标识主机发送的每一份数据报。通常每发一份报文,它的值会加1。
标志:占3比特。标志一份数据报是否要求分段。详细可以看这里:https://blog.csdn.net/NetRookieX/article/details/80640383
片偏移:占13比特。如果一份数据报要求分段的话,此字段指明该段偏移距原始数据报开始的位置。
生存时间:即TTL。可用于防止环路占用带宽,每经过一跳路由器则TTL减1,减为0则丢弃数据包。
协议:标识了上层所使用的协议
01 ICMP
02 IGMP
06 TCP
17 UDP
88 IGRP
89 OSPF
首部校验和:用来做IP头部的正确性检测,但不包含数据部分。 因为每个路由器要改变TTL的值,所以路由器会为每个通过的数据包重新计算这个值。
源地址:发送方的IP地址
目的地址:接收方的目的地址
可选字段与填充:与TCP中选项与字段意义一致。
数据链路层头部
这里指出图中缺点:CRC应改为FCS,FCS才是字段,CRC为校验方式。
目的地址:接收方MAC地址,因为此地址是局部链路地址,局域网中所有设备都需查看是否发送给自己,所以排在第一位。
源地址:发送方MAC地址。
长度/类型:指定长度/指定网络层所用的协议类型,通常是IP协议,0x0800。
接下来是数据部分,注意:如果有LLC子层,那么LLC子层占用的是数据部分的空间
最小帧:64字节,这是根据CSMA/CD的标准推导出。
帧头部:14字节,6字节目的地址+6字节源地址+2字节长度/类型=14字节。
帧中最小数据:64字节-6字节目的地址-6字节源地址-2字节长度/类型-4字节FCS字段(CRC)=46字节。
最大数据:即MTU=1500字节。
最大帧:MTU+帧头部14字节+FCS4字节=1518字节。
以上均未考虑前导码。
TCP,UDP,IP,数据链路层头部详解的更多相关文章
- TCP/UDP Linux网络编程详解
本文主要记录TCP/UDP网络编程的基础知识,采用TCP/UDP实现宿主机和目标机之间的网络通信. 内容目录 1. 目标2.Linux网络编程基础2.1 嵌套字2.2 端口2.3 网络地址2.3.1 ...
- [转载]MAC、IP头、TCP头、UDP头帧格式、详解
原文地址:MAC.IP头.TCP头.UDP头帧格式.详解作者:iTudu 转自:http://zoufengfu168.blog.163.com/blog/static/546105520099133 ...
- 网络编程之TCP/IP各层详解
网络编程之TCP/IP各层详解 我们将应用层,表示层,会话层并作应用层,从TCP/IP五层协议的角度来阐述每层的由来与功能,搞清楚了每层的主要协议,就理解了整个物联网通信的原理. 首先,用户感知到的只 ...
- 三十天学不会TCP,UDP/IP编程--MAC地址和数据链路层
这篇文章主要是来做(da)推(guang)介(gao)的!由于这两年接触到了比较多的这方面的知识,不想忘了,我决定把他们记录下来,所以决定在GitBook用半年时间上面写下来,这是目前写的一节,后面会 ...
- TCP协议粘包问题详解
TCP协议粘包问题详解 前言 在本章节中,我们将探讨TCP协议基于流式传输的最大一个问题,即粘包问题.本章主要介绍TCP粘包的原理与其三种解决粘包的方案.并且还会介绍为什么UDP协议不会产生粘包. 基 ...
- 三十天学不会TCP,UDP/IP网络编程-ARP -- 连接MAC和IP
继续来做(da)推(guang)介(gao)我自己的!由于这两年接触到了比较多的这方面的知识,不想忘了,我决定把他们记录下来,所以决定在GitBook用半年时间上面写下来,这是目前写的一节,目前已完成 ...
- HTTP头部详解
因为之后的HTTP头注入要学习这些所以就看了.觉得很不错,算是学习前的科普. <HTTP头部详解>转载自:http://www.cnblogs.com/lcamry/p/5763040.h ...
- 三十天学不会TCP,UDP/IP网络编程-IP头格式祥述
我又来了,这篇文章还是来做(da)推(guang)介(gao)我自己的!俗话说事不过三,我觉得我下次得换个说法了,不然估计要被厌恶了,但是我是好心呐,一定要相信我纯洁的眼神.由于这两年接触到了比较多的 ...
- TCP通讯处理粘包详解
TCP通讯处理粘包详解 一般所谓的TCP粘包是在一次接收数据不能完全地体现一个完整的消息数据.TCP通讯为何存在粘包呢?主要原因是TCP是以流的方式来处理数据,再加上网络上MTU的往往小于在应用处理的 ...
- TCP报文段首部格式详解
TCP首部格式 格式字段详解 源端口.目标端口: 计算机上的进程要和其他进程通信是要通过计算机端口的,而一个计算机端口某个时刻只能被一个进程占用,所以通过指定源端口和目标端口,就可以知道是哪两 ...
随机推荐
- win10 uwp 简单制作一个 Path 路径绘制的图标按钮
本文告诉大家在 UWP 或 WinUI 3 里面如何简单制作一个由 Path 几何路径图形绘制的图标按钮 先在资源里面定义按钮的样式,重写 Template 属性,通过在 Template 里面放入 ...
- 2018-8-10-WPF-省市县3级联动
title author date CreateTime categories WPF 省市县3级联动 lindexi 2018-08-10 19:16:53 +0800 2018-2-13 17:2 ...
- 最近常用的几个【行操作】的Pandas函数
最近在做交易数据的统计分析时,多次用到数据行之间的一些操作,对于其中的细节,简单做了个笔记. 1. shfit函数 shift函数在策略回测代码中经常出现,计算交易信号,持仓信号以及资金曲线时都有涉及 ...
- 【爬虫数据集】滇西小哥YouTube频道TOP10热门视频的热评数据,共2W条!
目录 一.背景介绍 二.爬取目标 三.结果展示 四.演示视频 五.附完整数据 一.背景介绍 滇西小哥是一位来自中国云南省的视频博主,他在YouTube上拥有超过1000万的订阅者和上亿的观看量.他的视 ...
- FFmpeg开发笔记(二十)Linux环境给FFmpeg集成AVS3解码器
AVS3是中国AVS工作组制定的第三代音视频编解码技术标准,也是全球首个已推出的面向8K及5G产业应用的视频编码标准.AVS工作组于2019年3月9日完成第三代AVS视频标准(AVS3)基准档次的制 ...
- JDK源码阅读-------自学笔记(六)(java.util.Arrays用法和描述浅析)
工具类的使用 要多使用这个类,同时,很多算法包含其中,常见操作排序.查找.填充.打印等. 1.打印数组 ------Arrays.toString() 1 // 整型初始化 2 int[] integ ...
- 计算机网络基础 — Linux 虚拟路由器
目录 文章目录 目录 前文列表 前言 Neutron L3 agent 概述 L3 agent的配置 虚拟路由器实现原理 总结 前文列表 <计算机网络基础 - 以太网> <计算机网络 ...
- Pageoffice6 实现后台批量生成Word文档
在实际项目开发中经常会遇到后台动态生成文档的需求,目前网上有一些针对此需求的方案,如果您想要了解这些方案的对比,请查看后台生成单个Word文档中的"方案对比". 如果一次只生成一份 ...
- PageOffice 6 保存数据区域数据同时保存文档
在实际应用中,例如在线签订合同的时候,合同的签订日期,合同号等等这些信息既要保存到数据库,合同签订后又要将整个合同文件保存起来.这时候就需要用到PageOffice的保存数据区域数据的同时保存整个文件 ...
- golang sync.once done 热路径
sync.once 为什么会将done放在结构体第一个字段,就能够提升性能了? 我们先来看看sync.once的结构体: // Once is an object that will perform ...