TCP、UDP、IP 协议分析
http://blog.chinaunix.net/uid-26833883-id-3627644.html
用wirshark抓包如下:
用wirshar抓包分析如下:
TCP采用一种名为“带重传功能的肯定确认(positive acknowledge with retransmission)”的技术作为提供可靠数据传输服务的基础。这项技术要求接收方收到数据之后向源站回送确认信息ACK。发送方对发出的每个分组都保存一份记录,在发送下一个分组之前等待确认信息。发送方还在送出分组的同时启动一个定时器,并在定时器的定时期满而确认信息还没有到达的情况下,重发刚才发出的分组。图3-5表示带重传功能的肯定确认协议传输数据的情况,图3-6表示分组丢失引起超时和重传。为了避免由于网络延迟引起迟到的确认和重复的确认,协议规定在确认信息中稍带一个分组的序号,使接收方能正确将分组与确认关联起来。
从图 3-5可以看出,虽然网络具有同时进行双向通信的能力,但由于在接到前一个分组的确认信息之前必须推迟下一个分组的发送,简单的肯定确认协议浪费了大量宝贵的网络带宽。为此, TCP使用滑动窗口的机制来提高网络吞吐量,同时解决端到端的流量控制。
滑动窗口技术是简单的带重传的肯定确认机制的一个更复杂的变形,它允许发送方在等待一个确认信息之前可以发送多个分组。如图 3-7所示,发送方要发送一个分组序列,滑动窗口协议在分组序列中放置一个固定长度的窗口,然后将窗口内的所有分组都发送出去;当发送方收到对窗口内第一个分组的确认信息时,它可以向后滑动并发送下一个分组;随着确认的不断到达,窗口也在不断的向后滑动。
(1)版本 占4位,指IP协议的版本。通信双方使用的IP协议版本必须一致。目前广泛使用的IP协议版本号为4(即IPv4)。关于IPv6,目前还处于草案阶段。
(2)首部长度 占4位,可表示的最大十进制数值是15。请注意,这个字段所表示数的单位是32位字长(1个32位字长是4字节),因此,当IP的首部长度为1111时(即十进制的15),首部长度就达到60字节。当IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。因此数据部分永远在4字节的整数倍开始,这样在实现IP协议时较为方便。首部长度限制为60字节的缺点是有时可能不够用。但这样做是希望用户尽量减少开销。最常用的首部长度就是20字节(即首部长度为0101),这时不使用任何选项。
(3)区分服务 占8位,用来获得更好的服务。这个字段在旧标准中叫做服务类型,但实际上一直没有被使用过。1998年IETF把这个字段改名为区分服务DS(Differentiated Services)。只有在使用区分服务时,这个字段才起作用。
(4)总长度 总长度指首部和数据之和的长度,单位为字节。总长度字段为16位,因此数据报的最大长度为216-1=65535字节。
在IP层下面的每一种数据链路层都有自己的帧格式,其中包括帧格式中的数据字段的最大长度,这称为最大传送单元MTU(Maximum Transfer Unit)。当一个数据报封装成链路层的帧时,此数据报的总长度(即首部加上数据部分)一定不能超过下面的数据链路层的MTU值。
(5)标识(identification) 占16位。IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。但这个“标识”并不是序号,因为IP是无连接服务,数据报不存在按序接收的问题。当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。
(6)标志(flag) 占3位,但目前只有2位有意义。
● 标志字段中的最低位记为MF(More Fragment)。MF=1即表示后面“还有分片”的数据报。MF=0表示这已是若干数据报片中的最后一个
● 标志字段中间的一位记为DF(Don’t Fragment),意思是“不能分片”。只有当DF=0时才允许分片。
(7)片偏移 占13位。片偏移指出:较长的分组在分片后,某片在原分组中的相对位置。也就是说,相对用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位。这就是说,每个分片的长度一定是8字节(64位)的整数倍。
(8)生存时间 占8位,生存时间字段常用的的英文缩写是TTL(Time To Live),表明是数据报在网络中的寿命。由发出数据报的源点设置这个字段。其目的是防止无法交付的数据报无限制地在因特网中兜圈子,因而白白消耗网络资源。最初的设计是以秒作为TTL的单位。每经过一个路由器时,就把TTL减去数据报在路由器消耗掉的一段时间。若数据报在路由器消耗的时间小于1秒,就把TTL值减1。当TTL值为0时,就丢弃这个数据报。
(9)协议 占8位,协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个处理过程。
(10)首部检验和 占16位。这个字段只检验数据报的首部,但不包括数据部分。这是因为数据报每经过一个路由器,路由器都要重新计算一下首部检验和(一些字段,如生存时间、标志、片偏移等都可能发生变化)。不检验数据部分可减少计算的工作量。
(11)源IP地址 占32位。
(12)目的IP地址 占32位。
可以看到,但数据提交到网络层的时候,由于数据超过了最大传输单元,就分片了。分成多个包通过IP协议发送个对方。每个数据包最大的字节为MTU - IP头 = 1500 - 20 = 1480。
TCP、UDP、IP 协议分析相关推荐
- 网络协议报文理解刨析篇二(再谈Http和Https), 加上TCP/UDP/IP协议分析(理解着学习), 面试官都惊讶你对网络的见解
目录 前文链接(系列助学, 也为后文学习做铺垫, 可按需读取) 一. 再谈HTTP再理解 二. HTTP对比学习HTTPS HTTP和HTTPS的区别如下: 三.TCP协议 (三次握手四次挥手细节过 ...
- 网络基础 ------- UDP、TCP及IP协议详解
目录 UDP协议 1.UDP报文结构 报文长度 校验和 TCP协议 1.TCP报文结构 2.TCP的可靠传输机制 1.确认应答 2.超时重传 3.连接管理 4.滑动窗口 5.流量控制 6.拥塞控制 7 ...
- uIP tcp/ip协议分析及其在嵌入式系统中的应用
网络技术的发展使越来越多的工业控制设备将网络接入功能作为其必备的特性之一.同样,嵌入式系统的发展,要求其应用能够支持网络功能,为用户提供一个简易方便的可视化图形界面.当前WEB浏览器已经成为用户的合理 ...
- 三十天学不会TCP,UDP/IP网络编程-IP头格式祥述
我又来了,这篇文章还是来做(da)推(guang)介(gao)我自己的!俗话说事不过三,我觉得我下次得换个说法了,不然估计要被厌恶了,但是我是好心呐,一定要相信我纯洁的眼神.由于这两年接触到了比较多的 ...
- 计算机网络-实验5:网络层-IP协议分析
实验报告 IP协议分析与子网转发 实验目的:1.理解IP协议数据报格式,IP数据包分片: 2.了解路由器在不同子网之间转发数据报,配置静态路由. 实验任务1.启动W ...
- KNX IP 协议分析
KNX IP 协议分析 KNXnet/IP 连接请求数据包 连接请求响应数据包 连接状态请求 连接状态请求响应 Tunnel请求 Tunnel请求响应 最后 KNXnet/IP KNXnet/IP ...
- Tcp与Ip协议的客户端和服务器编程
Tcp与Ip协议的客户端和服务器编程 本文就TCP和Ip协议的客户端和服务器分别进行编程,实现了客户端和服务端进行通信的功能,服务端对多个客户端进行监听,并能与多个客户端通信. 服务器端代码如下: u ...
- 计算机网络实验-->> IP 协议分析
一.实验目的 掌握IP数据包格式以及关键字段的含义: 掌握路由器转发IP数据包的流程: 理解验证IP分片原理. 二.实验内容 根据下述网络拓扑结构图,实现IP协议分析. 三.实验步骤 1.添加并连接网 ...
- TCP/IP协议分析
一;前言 学习过TCP/IP协议的人多有一种感觉,这东西太抽象了,没有什么数据实例,看完不久就忘了.本文将介绍一种直观的学习方法,利用协议分析工具学习TCP/IP,在学习的过程中能直观的看到数据的具体 ...
最新文章
- 短信猫GSM Modem
- 批处理作业调度-回溯法
- 单个接口添加超时时间_SpringBoot使用Guava令牌桶对接口限流
- 暑期训练日志----2018.8.11
- 如何让Java应用在Aone上打包速度提高100%以上
- atitit. orm mapping cfg 映射配置(3)-------hbnt one2maney cfg
- C# BackgroundWorker使用
- Qt实践2: 简易计算器
- 关于C语言中fseek函数的使用
- 几何分布的期望和方差公式推导_GPR(高斯过程回归)详细推导
- USACO 2015 December Contest Gold T1: High Card Low Card
- HTCviveVR基于unity开发搭建初始界面
- 本周最新文献速递20211017
- 模块格式:CommonJS AMD CMD UMD ES6
- uniCloud云函数 云对象简单使用
- 获取网店管家订单信息
- tabulator默认选中,设置点击当前选中项不取消选择
- 交换代数 -- 诺特环
- 进阶|“幂律与临界”支配神经网络,深度学习技术要向大脑学习
- l连接mysql数据库时报错(1045, Access denied for user 'root'@'127.0.0.1 (using password: YES))
热门文章
- Stata 17 for Win 最新中文附详细安装教程
- 如何用Endnote在论文中插入图片
- 问题 | Matlab:Fatal Error on startup(致命错误)
- 计算机视觉与深度学习 | 视觉SLAM详解及应用(中文版)
- 14个你可能不知道的JavaScript调试技巧
- java音乐播放器文库_android音乐播放器开发教程
- Python中Pyaudio安装失败的解决办法
- wxWidgets随笔(2)-hello,world
- PyTorch入门v2.pptx
- 【机器学习】这次终于彻底理解了奇异值分解(SVD)原理及应用