小白学TCP/IP(四)IP协议篇

2024-04-25 23:48
文章标签 ip 协议 tcp 小白学

本文主要是介绍小白学TCP/IP(四)IP协议篇,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

IP协议篇

网络层与数据链路层之间的关系

网络层负责端到端之间(消息发送端与消息接收段)的通信,但至于中间消息是怎样被转发的,得通过数据链路层实现,也就是说数据链路层负责每个数据链路从源MAC地址到目标MAC地址之间的数据传输,而网络层则是规定了数据最开始的发送端和最终的接收端.

把这个过程比喻成快递运输,假如我在北京要发送一个快递到武汉市华中科技大学机械大楼,IP层完成的任务就是在快递单上写上寄件人地址和收件人地址(源地址和目的地址)和其他信息,然后贴到快递包裹上,然后快递点通过一张规定好的快递传输信息表(比如目的地为武汉,则直接发送到郑州快递中转站),这张信息表在网络传输中叫做路由控制表,这样快递就从寄件人----北京----郑州中转站----武汉总站----华中科技大学站----华中科技大学机械学院----收件人手中,其中北京到郑州中转站之间的传输即为数据链路层的传输,只负责从一个中转点运输到下一个中转点(数据链路层的主要作用是在互联同一种数据链路的节点之间进行包传递)

IP协议为什么是面向无连接的

IP面向无连接,在发包之前不需要建立与对端目标地址之间的连接,将这个功能实现委托给了TCP层去实现.

  • 为了简化,面向连接比起面向无连接处理相对复杂.
  • 为了提速,面向连接每次通信之前都要建立连接,会降低处理速度.
  • 分层实现不同的功能,IP只负责将数据发给目标主机,而TCP负责保证对端主机确实接收到数据.每一层的分工明确,简化协议的实施与编程,有利于协议今后的扩展和性能优化.

IP地址分类

IP地址(32位)分为四个级别,分别是A类,B类,C类,D类.

A类地址
首位以0开头,从第1位到第8位是它的网络标识
十进制表示: 0.0.0.0~127.0.0.0是A类的网络标识,后24位用于主机标识
一个网段可容纳主机地址上限为:16,777,214个
B类地址
首位以10开头,从第1位到第16位是它的网络标识
十进制表示: 128.0.0.0~191.255.0.0是A类的网络标识,后16位用于主机标识
一个网段可容纳主机地址上限为:65,534个
C类地址
首位以110开头,从第1位到第24位是它的网络标识
十进制表示: 192.0.0.0~223.255.255.0是A类的网络标识,后8位用于主机标识
一个网段可容纳主机地址上限为:254个
D类地址
首位以1110开头,从第1位到第32位是它的网络标识
十进制表示: 224.0.0.0~239.255.255.255是A类的网络标识,没有主机标识,常被用于多播.

补充知识:
主机标识位上不可以全是0或者全是1,这两种情况有特殊用处
全是0代表对应的网络地址或IP地址不可获知的情况
全是1的主机地址通常被作为广播地址

子网掩码

引入子网后,IP地址就有了两种识别码,一个是IP地址本身,一个是表示网络部的子网掩码

子网掩码的作用: 将IP地址划分为更小粒度的网络,而不再受限于ABCD类地址划分方式.

子网掩码的构成: 采用32位二进制表示,对应IP地址网络标识部分的位全部为"1",对应主机标识部分的位全部为"0".

子网掩码的两种表示方式:
以172.20.100.52的前26位为网络标识为例

  • IP地址:172.20.100.52 子网掩码:255.255.255.192
  • IP地址:172.20.100.52/26(直接在IP地址后面追加网络地址的位数,用"/"隔开)

路由控制

路由控制表的作用:
发送数据包所使用的地址为网络层的地址(IP地址),但是仅仅有IP地址无法完成将数据包传输到对端目标地址,因为中间可能存在很多数据链路.在数据发送过程中还需要指明路由器或主机的信息,保存这种信息的就是路由控制器.

路由控制表的形成方式:

  • 静态路由控制:由管理员手动设置
  • 动态路由控制:路由器与其他路由器相互交换信息时自动刷新

路由控制转发的原理:

前提: 路由控制表中记录着网络地址和对应的下一步应该转发的路由器的地址.

在发送IP包时,首先要确定IP包首部中的目标地址,再从路由控制表中找到与该地址具有相同网络地址的记录,根据该记录将IP包转发至对应的下一个路由器(如果路由控制表中存在多条相同网络地址的记录,就选择一个最为吻合的网络地址,即相同位数最多的网络地址,例如172.20.100.52的网络地址与172.20/16和172.20.100/24两项都是匹配的,但是172.20.100/24是最吻合的,应该转发到该地址对应的路由器.

补充知识:
环回地址:环回地址是在同一台计算机上不同程序之间进行网络通信所使用的默认地址,即127.0.0.1,也可以用localhost来代替,使用该IP时,数据包并不会流向网络.

IP分割处理与再构成

每种数据链路的使用目的不同,所以可承载的MTU也不同

为何需要将IP报文分割
每个数据链路的最大传输单元(MTU)不尽相同,一旦IP报文的大小比数据链路中最小的MTU大的时候,就会发生IP报文分割,也就是分片.(可以理解为数据链路的运输能力不够,只能将单个报文分割成多个报文运输)

为何经过分片后的IP数据报的重组只能由目标主机进行
如果在中途重组,有可能在之后又面临分片的尴尬处境,这会给路由器带来多余的负担,也会降低网络传输效率.

路径MTU发现

路径MTU:是指从发送端主机到接收端主机之间不需要分片时最大的MTU大小,也就是路径中所有数据链路中最小的MTU.

路径MTU发现原理:

  1. 首先源地址将数据报的分片标志位设置为不分片,并将IP数据报发送出去
  2. 路径上任何需要将分组进行分片的设备都会将这种数据报丢弃并返回“数据报过大和当前数据链路允许的最大MTU“的ICMP响应到源地址
  3. 源地址主机将IP分片,并重新设置最大MTU,再次将IP数据报发送出去
  4. 不断探索发送直到不再收到ICMP响应,这样源主机就”学习“到了无需分片就能通过这条路径的最大的最大传输单元。
    [外链图片转存失败(img-fi9yRcRw-1565752177829)(https://raw.githubusercontent.com/zrysmt/mdPics/master/HTTP协议/tcp-ip/12.png)]

IPv4首部

IP首部中包含用于IP协议进行发包控制时所有的必要信息

属性大小(比特)作用举例(补充说明)
版本4标识IP首部的版本号IPv4的版本号为4
首部长度4表明首部的大小,单位为4字节(32比特)没有可选项时,首部长度设置为5,即IP首部长度为4*5=20字节
区分服务8表明服务质量基本被所有网络无视,没有投入使用
总长度16IP首部+数据部分的总字节数IP包的最大长度为65535(=2的16次方)字节
标识16用于分片重组单个IP数据报被分割后的分片,该标识相同
标志3表示包被分片的相关信息第1个比特未使用,目前必须为0,第二个比特表示是否分片,第三个比特表示被分片的情况下是否为最后一个包
片位移13标识被分片的每一个分段相对于原始数据的位置第一个分片对应的值为0
生存时间8可以中转多少个路由器每经过一个路由器,TTL减1,变为0则丢包,可以避免IP包在网络内无限传递
协议8表示IP包传输层的上层协议编号TCP编号为6,UDP编号为17
首部校验和16校验数据报的首部,确保IP数据报不被破坏
源地址32表示发送端地址
目标地址32表示接收端地址

IPv6

IPv6是为了根本解决IPv4地址耗尽的问题而被标准化的网际协议.

IPv4地址长度为4个8位字节,即32比特,而IPv6的地址长度为128比特,一般写成8个16位字节.

IPv6用十六进制表示(8个16位字节)
FEDC:BA98:7654:3210:FEDC:BA98:7654:3210

IPv6地址区分

地址名称区别
全局单播地址全世界唯一的一个地址
链路本地单播地址同一个数据链路内唯一的地址
唯一本地地址不进行互联网通信时所使用的地址

这篇关于小白学TCP/IP(四)IP协议篇的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/936135

相关文章

探索蓝牙协议的奥秘:用ESP32实现高质量蓝牙音频传输

蓝牙(Bluetooth)是一种短距离无线通信技术,广泛应用于各种电子设备之间的数据传输。自1994年由爱立信公司首次提出以来,蓝牙技术已经经历了多个版本的更新和改进。本文将详细介绍蓝牙协议,并通过一个具体的项目——使用ESP32实现蓝牙音频传输,来展示蓝牙协议的实际应用及其优点。 蓝牙协议概述 蓝牙协议栈 蓝牙协议栈是蓝牙技术的核心,定义了蓝牙设备之间如何进行通信。蓝牙协议

[vivado][IP核]FFT

刘东华的IP核详解: 1、 2、

[vivado][IP核]DDS

刘东华的IP核详解: 1、 这里的是指IP核配置中的相位数据的宽度。 2、 实际使用此IP核时并没有“频率分辨率”可以配,是靠改变来变的。 3、 4、 5、 数据输出的ready在数据正式输出时才会有。 自己仿真: 使用SIN/COS LUT only的模式,使用一个累加器作为相位输入,不知怎么,输出为X。

[ip核][vivado]aurora

Xapp1193:  discovered:1)并不是所有芯片都支持aurora.xc7z010就没有。                     2)XDC文件的指令-允许未约束的引脚的存在:                 set_property BITSTREAM.General.UnconstrainedPins {Allow} [current_design] PG046

[ip核][vivado]Block Menory Gennerator 学习

<刘东华的xilinx系列FPGA芯片IP核详解>读书摘录: 1. 2. 3.

[ip核][vivado]FIFO 学习

<xlinx FPGA应用进阶 通用IP核详解和设计开发>读书摘录: 1.        2.3.仿真模型 特点总结:1)复位后会有busy状态,需要等待wr_rst_busy信号低电平后才能正常写入                  2)prog_full信号的高电平长度可调                  3)仿真中的读状态很奇怪,并没有正常读取,都是XXX的状态。 所用的te

【杂记-浅谈DHCP动态主机配置协议】

DHCP动态主机配置协议 一、DHCP概述1、定义2、作用3、报文类型 二、DHCP的工作原理三、DHCP服务器的配置和管理 一、DHCP概述 1、定义 DHCP,Dynamic Host Configuration Protocol,动态主机配置协议,是一种网络协议,主要用于在IP网络中自动分配和管理IP地址以及其他网络配置参数。 2、作用 DHCP允许计算机和其他设备通

局域网内vue2 配置本地IP地址访问项目

在日常开发中同事可能需要访问你的前端项目,可以通过配置实现通过ip访问 一.首先找到config文件夹目录下的 index.js文件             将此处的host的值修改为0.0.0.0(即 host: 0.0.0.0) // Various Dev Server settings//host: 'localhost' //将localhost进行替换成 0.0.0.0host:

理解什么是DSR,嗅探器视角下的IP和MAC地址识别(C/C++代码实现)

网络嗅探器是监控和分析网络流量的一种工具,它能够捕获数据包并提取出关键的信息,比如IP地址和MAC地址。 网络嗅探器工作原理基于网卡的工作模式。正常情况下,网卡只处理发送给它的数据包,忽略其他数据。但是,如果将网卡设置为“混杂模式”,那么它可以接收到网络上所有的数据包,而不仅仅是发给它的数据包。网络嗅探器就是利用了这一特性来捕获网络上的数据交换。 数据包是网络通信的基本单位,包含了传输数据和控

webstorm 允许他人通过ip访问项目

webstorm 允许他人通过ip访问项目 如题,在网上搜配置局域网ip访问项目的相关问题,很多都有解释,这里主要是针对wenbstorm设置后依旧无法访问,做下记录。 如图所示,端口需要4位数,相应的地方需要打钩,到这一步,基本就可以通过ip和端口进行远端项目访问。如果还不行,基本就是防火墙的问题。解决步骤如下: 打开windows防火墙,找到webstorm,此时应该处于关闭