本文讲解tcpip卷一第3章第一部分IP头部,现在回顾一下前一篇

图3-1手机快递图

大家可以看到快递包装对比的是以太网,手机包装对比的就是IP了,来看一下IP层的位置以及内容,
大家可以看到黄色方框表示数据包传送的格式,最外层是mac的目的地址,以及源地址,然后是type数据类型,然后是数据,我们把数据在细分一下,可以看到IP层由IP头部以及IP数据构成,整个数据从链路层来看是数据,在IP层细分又是不同格式,打个比方:湖南省从国家来看就是一个省,不过省里面也区分头部(长沙),以及其他的内容(衡阳,以及其他城市)。

图3-2IP与以太网报文联系
我们现在先看回顾一下IP地址:
再我们现在来看一下IP头部是什么样子的?

图3-3IP头部图片
这里不从开始一条条分析,而从使用角度来一步步分析对应头部。
现在有这样3台电脑,

图3-4
PC X: IP_X 1.1.1.1 MAC_X :01:01:01:01:01:01:
PC Y: IP 1.1.1.2 MAC_Y :01:01:01:01:01:02:
PC Z: IP 1.1.1.3 MAC_Z :01:01:01:01:01:03:
IP_X表示IP X的ip的代号,MAC_X表示 IP X的mac代号,其他一样意思

PC X想发一条信息告诉PC Y:我喜欢王力宏

那我们来看一下对应数据
MAC_Y | MAC_X|0800|IP_X IP_Y 我喜欢王力宏|CRC
从上面的数据来看IP 头部只要有图3-3里面的源IP地址与目的IPi地址就可以发送了,那么这条数据就可以发送了,不过为什么IP 头部要弄这么复杂,现在来看一下其中一个字段
8位协议字段
这个就好比IP数据里面又有其他协议,你要告诉系统应该用什么协议进行解析。这个是不是很像以太网的类型,以太网的类型告诉系统后面是IP协议还是其他协议,对把
那我们再加上8位协议字段
MAC_Y | MAC_X|0800|IP_X IP_Y |8位协议字段|我喜欢王力宏|CRC,
如果这条消息再传送的过程中出现了错误变成了
MAC_Y | MAC_X|0800|IP_X IP_Z |8位协议字段|我喜欢王力宏|CRC
那么怎样知道这个消息出现了错误了?这个时候需要一个发现错误的机制,对应这16位的校验和,(这个校验和只校验IP头部)
那接着数据应该变成这样
MAC_Y | MAC_X|0800|IP_X IP_Y |8位协议字段|16位头部校验和|我喜欢王力宏|CRC,
发现现在这个报文能够实现对IP层后面的数据进行解析,以及头部校验错误检查了,比之前有很强的健壮了。
如果他非常喜欢王力宏,IP X想一次发送1000句子我喜欢王力宏,那么我们记得以太网有个长度限制叫做MTU,这个大小位1500字节,那么只能把这个句子多次发送,这个就叫做分片对应3位标识以及13位偏移,以及到时候把分片的数据从新组装的时候要知道是发送哪个消息时候超过了最大MTU的值把,比如我再发送一个我喜欢林俊杰,你不可能把这句也重组到我喜欢王力宏,那么我们给每个IP 有个16位标识
MAC_Y | MAC_X|0800|IP_X IP_Y |8位协议字段|16位头部校验和|16位标识(0x1111)|分片信息|我喜欢王力宏|CRC,
一个报文长度超过MTU要进行分片,16位标识用于识别要分片的报文与其他报文,分片信息用于组装分片
如果PC X是校长用的电脑,那么他的权力比较高,也要保障他发送的消息能够再网络拥堵的时候也能正常送达,如果PC X是学生,那么网络拥堵的时候是可以把他的数据包不用处理的。这个时候怎样标识一个是校长,一个是学生?
用TOS来标识网络优先级
MAC_Y | MAC_X|0800|IP_X IP_Y |8位协议字段|16位头部校验和|16位标识(0x1111)|分片信息|TOS| 我喜欢王力宏|CRC,
如果信息不是X->Y 而是X->Z,或者再X,Y之间有很多台电脑这样场景,再这样场景的情况下,有个问题如果信息在2台电脑里面打转转,那不是一直在传送,这样增加了电脑处理这样无意义的信息?这个时候就要标识一个值经过多少台电脑之后这个就不再传送了,这个值就是TTL,标识经过多少台电脑之后就不再传送了
MAC_Y | MAC_X|0800|IP_X IP_Y |8位协议字段|16位头部校验和|16位标识(0x1111)|分片信息|TOS| TTL|我喜欢王力宏|CRC,
在传送的时候可能在IP头部添加一些信息想获取某些信息,比如想获取传送这条消息经过哪些电脑,这样消息就可以用选项字段来进行保存,在最开始的时候就有对应空间来保存想要的数据,有了选项字段,那么IP头部大小就不是固定的,那么就要一个IP头部长度字段来表明IP 头部长度大小,以及在这里版本号固定.
MAC_Y | MAC_X|0800|IP_X IP_Y |8位协议字段|16位头部校验和|16位标识(0x1111)|分片信息|TOS| TTL|IP 选项|4位首部长度|4位版本号|我喜欢王力宏|CRC
在这里单独说明一下4位首部长度单位是4个字节,所以24=16,最大为15*4=60字节
上一章说过IP报文最小是64字节,那么如果我ip长度小于64字节要进行填充,那怎样知道是填充还是真的是64字节?这个就是16位总长度字段。这样头部就讲好了,有疑问可以留言。
下一章再讲解IP寻址与路由

tcpip详解卷一第3章(1)相关推荐

  1. TCP-IP详解卷一(一)概述

    2020年9月17日16:49:32 概述 分层,通常网络分层有两种分层方式,分别是七层结构和四层结构,这里说的分层是四层结构: 1.应用层(FTP和e-mail等) 2.运输层(TCP和UDP) 3 ...

  2. 【TCP-IP详解卷一:协议】ch1概述

    目录 1. 分层 2. 互联网的地址 三类IP地址: 3. 域名系统(DNS) 4. 封装 5. 分用 6. 客户-服务器模型 6.1 重复型服务器 6.2 并发型服务器 7. 端口号 7.1 服务器 ...

  3. 【TCP-IP详解卷一:协议】ch28 SMTP:简单邮件传送协议

    目录 1. 引言 2. SMTP协议 2.1 SMTP命令 2.2 信封.首部和正文 2.3 中继代理 2.4 NVT ASCII 2.5 重试间隔 1. 引言 TCP邮件交换是由报文传送代理MTA完 ...

  4. 【TCP-IP详解卷一:协议】ch16 BOOTP:引导程序协议

    目录 1. 引言 2. BOOTP的分组格式 2.1 BOOTP请求和应答的格式: 2.2 端口号 3. BOOTP服务器的设计 4. BOOTP穿越路由器 5. 特定厂商信息 6. 小结 1. 引言 ...

  5. TCP/IP详解卷一读书笔记一

    TCP/IP详解卷一:第一章 一.分层   1.网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能.   疑点 介质访问控制方法   多个主机需要通过一条"共享介质"发送 ...

  6. TCP/IP协议详解卷一:Chapter21 笔记

    TCP/IP协议详解卷一:Chapter21 笔记 Chapter 21 TCP的超时与重传 21.3 往返时间测量 21.5 拥塞举例 21.6 拥塞避免算法 21.7 快速重传与快速恢复算法 21 ...

  7. 《TCP/IP详解卷一》学习笔记

    <TCP/IP详解卷一>学习笔记 第1章 概述 第3章 IP:网际协议 第6章 ICMP:internet控制报文协议 第7/8章 Ping/Traceroute程序 第9/10章 IP路 ...

  8. 后台开发真的不需要看《tcpip详解》吗

    说起TCP协议真的一大堆东西,TCP很复杂和网络编程息息相关,网络编程离不开TCP.虽然数据通过协议自己就发出去了,但是在排查网络问题时,我们都是通过抓包看协议本身.更好的学习tcp协议才能了解网络编 ...

  9. TCP-IP详解:快速重传与快速恢复

    快速重传算法 快速重传算法在之前的文章中有介绍,如果收到一个out-of-order的报文段时, TCP需要立刻产生一个ACK,这个ACK不应该被延时,目的在于让对方知道收到一个失序的报文,并告诉对方 ...

  10. TCP-IP详解:重传机制

    参考教材:TCP-IP Guide 超时重传是TCP保证数据传输可靠性的又一大措施,本文主要介绍重传TCP报文的两大举措:超时重传和快速重传 超时重传机制 超时重传指的是,发送数据包在一定的时间周期内 ...

最新文章

  1. 广西互联网金融平台系列-7条奇怪的投资数据
  2. 吴恩达《Machine Learning》精炼笔记 1:监督学习与非监督学习
  3. ELK报错expected block end, but found BlockMappingStart
  4. 11. Container With Most Water
  5. 在终端(Terminal)中用颜色显示不同类型文件
  6. php微信二次分享出错,解决微信二次分享bug
  7. highcharts
  8. jQuery幸运大转盘_jQuery+PHP抽奖程序的简单实现
  9. React:react-router
  10. 从@ComponentScan注解配置包扫描路径到IoC容器中的BeanDefinition,经历了什么(三)?
  11. Building your Deep Neural Network - Step by Step v5 作业 - Neural Networks and Deep Learning
  12. Canvas实现太极图案并旋转
  13. 收到了CSDN送的图书,表示感谢|对《程序员的三门课》的一表格表示疑问
  14. 奥迪A6(C5)遥控器钥匙更换电池后无法使用的适配(对码)方法
  15. 建设数据中心机房主要看这几点,否则被定为劣质机房!!!
  16. 将字符串转换为日期,将日期转换成指定格式的字符串
  17. Substrate是什么,为什么要选择Substrate
  18. AUTOCAD——连续标注
  19. 本机配置nginx后css样式失效
  20. 驱动中实现模拟键盘按键

热门文章

  1. 旅游管理系统告诉你:研学导师人才紧缺
  2. 旅游管理系统项目java设计_基于JSP的旅游管理系统设计与实现(MyEclipse,SQL)
  3. Vue 2.0 + Axios + Vue Router 实现CNode社区
  4. c语言用程序判断是否素数,用C语言编写判断一个数是否是素数的程序
  5. 基于java题库及试卷管理模块的设计与开发(含源文件)
  6. 基于python的贪吃蛇游戏设计与实现
  7. Golang学习:生成GIF动画
  8. OpenCV和java做人脸识别
  9. wps xml转换表格_如何转换Excel格式?学会这几招?1键即可完成转换
  10. 生成各种随机数据:随机数、随机字符串、随机汉字姓名、随机电话号码、随机日期