current position:Home>Linux Network Learning Part VII: Detailed Explanation of IP Protocol + Data Link Layer

Linux Network Learning Part VII: Detailed Explanation of IP Protocol + Data Link Layer

2022-08-06 19:07:01Cola_Forever

IP协议与TCP协议的关系

In the previous section, we discussed in detailTCP的发送与接收,But in fact the data is not from the transport layerTCPSend directly to the transport layer of the peer hostTCP缓冲区,But need to pass the network layeripProcessing of the agreement,processed at the data link layer(后面讲).因此本章主要介绍IPthe content of the agreement andIPThe role of the protocol in the transmission process!
TCP相当于IP的老大,吩咐IP去做事,如何发送,发送多少,If something goes wrong, you need to listenTCP的
因此TCP负责决策, IP负责执行

IP协议

在这里插入图片描述

4位版本

在这里插入图片描述

4位首部长度

在这里插入图片描述

16位总长度(字节):字面意思,最大65535个字节

8位生存时间(TTL)

在这里插入图片描述

8位协议:表示上层(传输层)的协议是什么

16位首部校验和: 使用CRC(循环冗余校验,可百度)进行校验, 来鉴别头部是否损坏

32位源地址和32位目标地址: 表示发送端和接收端

选项字段(不定长, 最多40字节)

16位标识 + 3位标志 + 13位片偏移(难点)

First, explain that the data inIPThe maximum data length of the next layer, the data link layer, is1500字节,当我的IPThe agreement overall exceeds1500After the bytes need to be split, you can retrieve the split parts through these three parts and connect them in order to ensure the integrity of the data!
在这里插入图片描述
在这里插入图片描述
因此TCPThe total length of the message should be controlled as far as possible1480以内,分片丢失了,retransmit all,效率降低

IP网段划分

IP地址分为两个部分, 网络号和主机号
网络号: 保证相互连接的两个网段具有不同的标识;
主机号: 同一网段内, 主机之间具有相同的网络号, 但是必须有不同的主机号

在这里插入图片描述
通过上图总结:
不同的子网其实就是把网络号相同的主机放到一起
如果在子网中新增一台主机, 则这台主机的网络号和这个子网的网络号一致, 但是主机号必须不能和子网中的其他主机重复

IP划分

通过合理设置主机号和网络号, 就可以保证在相互连接的网络中, 每台主机的IP地址都不相同,那么问题来了, 手动管理子网内的IP, 是一个相当麻烦的事情
过去曾经提出一种划分网络号和主机号的方案, 把所有IP 地址分为五类, 如下图所示:
在这里插入图片描述

随着Internet的飞速发展,这种划分方案的局限性很快显现出来,大多数组织都申请B类网络地址, 导致B类地址很快就分配完了, 而A类却浪费了大量地址
例如, 申请了一个B类地址, 理论上一个子网内能允许6万5千多个主机. A类地址的子网内的主机数更多,然而实际网络架设中, 不会存在一个子网内有这么多的情况. 因此大量的IP地址都被浪费掉了.

针对这种情况提出了新的划分方案, 称为CIDR(Classless Interdomain Routing):
1. 引入一个额外的子网掩码(subnet mask)来区分网络号和主机号;
2. 子网掩码也是一个32位的正整数. 通常用一串 “0” 来结尾;
3. 将IP地址和子网掩码进行 “按位与” 操作, 得到的结果就是网络号;
4. 网络号和主机号的划分与这个IP地址是A类、B类还是C类无关

总结:By limiting the number of bits in the subnet mask I adjust the number of hosts allowed to build on a network,减少了浪费
在这里插入图片描述
在这里插入图片描述

特殊的IP地址

*将IP地址中的主机地址全部设为0, 就成为了网络号, 代表这个局域网;
将IP地址中的主机地址全部设为1, 就成为了广播地址, 用于给同一个链路中相互连接的所有主机发送数据包;
127.的IP地址用于本机环回(loop back)测试,通常是127.0.0.1

IP地址的数量限制

我们知道, IP地址(IPv4)是一个4字节32位的正整数. 那么一共只有 2的32次方 个IP地址, 大概是43亿左右. 而TCP/IP协议规定, 每个主机都需要有一个IP地址.
这意味着, 一共只有43亿台主机能接入网络么?
实际上, 由于一些特殊的IP地址的存在, 数量远不足43亿; 另外IP地址并非是按照主机台数来配置的, 而是每一个网卡都需要配置一个或多个IP地址.

CIDR在一定程度上缓解了IP地址不够用的问题(提高了利用率, 减少了浪费, 但是IP地址的绝对上限并没有增加), 仍然不是很够用. 这时候有三种方式来解决:
1. 动态分配IP地址: 只给接入网络的设备分配IP地址. 因此同一个MAC地址的设备, 每次接入互联网中, 得到的IP地址不一定是相同的;
2. NAT技术(后面会重点介绍);
3. IPv6: IPv6并不是IPv4的简单升级版. 这是互不相干的两个协议, 彼此并不兼容; IPv6用16字节128位来表
示一个IP地址; 但是目前IPv6还没有普及

私有IP地址和公网IP地址

如果一个组织内部组建局域网,IP地址只用于局域网内的通信,而不直接连到Internet上,理论上 使用任意的IP地址都可以,但是RFC 1918规定了用于组建局域网的私有IP地址:
10.,前8位是网络号,共16,777,216个地址
172.16.到172.31.,前12位是网络号,共1,048,576个地址
192.168.
,前16位是网络号,共65,536个地址
包含在这个范围中的, 都成为私有IP, 其余的则称为全局IP(或公网IP)

在这里插入图片描述
总结:
All the people who want to access to public,必须使用私有IP,使用私有IP,must be connected first,Build me private via routerIP,All the people all over the world use in their own local area network are privateIP,If you want to access other public networks across the LAN, it will be done for you through the router(后面细说)

Realistic network communication process

First of all, it is inseparable from the operator,移动电信联通,it is their efforts,The infrastructure is not so well established,We can be online anytime, anywhere.
Because of the aboveIP数量不够,Therefore, most of the things we usually use in the local area network are privateIP,能够大大减少IP数量的使用,when we want to access other sharedIP时,大致流程如下:
总结:Router at home have a subnetIP,对外有WAN口IP,Subnets can be continuously subdivided by routers,Communication across the network,They are the last to complete the communication on the public network.
在这里插入图片描述

一个路由器可以配置两个IP地址, 一个是WAN口IP, 一个是LAN口IP(子网IP).
路由器LAN口连接的主机, 都从属于当前这个路由器的子网中.
不同的路由器, 子网IP其实都是一样的(通常都是192.168.1.1). 子网内的主机IP地址不能重复. 但是子网之间的IP地址就可以重复了.
每一个家用路由器, 其实又作为运营商路由器的子网中的一个节点. 这样的运营商路由器可能会有很多级, 最外层的运营商路由器, WAN口IP就是一个公网IP了.
子网内的主机需要和外网进行通信时, 路由器将IP首部中的IP地址进行替换(替换成WAN口IP), 这样逐级替换, 最终数据包中的IP地址成为一个公网IP. 这种技术称为NAT(Network Address Translation,网络地
址转换)

在这里插入图片描述

NAT技术与NAPT

NAT技术当前解决IP地址不够用的主要手段, 是路由器的一个重要功能
1.NAT能够将私有IP对外通信时转为全局IP. 也就是就是一种将私有IP和全局IP相互转化的技术方法:
2.很多学校, 家庭, 公司内部采用每个终端设置私有IP, 而在路由器或必要的服务器上设置全局IP;
3.全局IP要求唯一, 但是私有IP不需要; 在不同的局域网中出现相同的私有IP是完全不影响的

NAT IP转换过程

在这里插入图片描述

NAPT(To put it bluntly, every time the source from the routerIPAfter being replaced, a conversion table will be generated,to find the way home)

如果局域网内, 有多个主机都访问同一个外网服务器, 那么对于服务器返回的数据中, 目的IP都是相同的. 那么NAT路由器如何判定将这个数据包转发给哪个局域网的主机? 这时候NAPT来解决这个问题了. 使用IP+port来建立这个关联关系
在这里插入图片描述

NAT技术的缺陷

由于NAT依赖这个转换表, 所以有诸多限制:
1.无法从NAT外部向内部服务器建立连接;
2.转换表的生成和销毁都需要额外开销;
3.通信过程中一旦NAT设备异常, 即使存在热备(可自行百度), 所有的TCP连接也都会断开;

路由(在复杂的网络结构中, 找出一条通往终点的路线)

路由的过程, 就是这样一跳一跳(Hop by Hop) “问路” 的过程.
所谓 “一跳” 就是数据链路层中的一个区间. 具体在以太网中指从源MAC地址到目的MAC地址之间的帧传输区间

在这里插入图片描述
IP数据包的传输过程也和问路一样
1.当IP数据包, 到达路由器时, 路由器会先查看目的IP;
2.路由器决定这个数据包是能直接发送给目标主机, 还是需要发送给下一个路由器;
3.依次反复, 一直到达目标IP地址
在这里插入图片描述
1. 路由表可以使用route命令查看
2. 如果目的IP命中了路由表, 就直接转发即可;
3. 路由表中的最后一行,主要由下一跳地址和发送接口两部分组成,当目的地址与路由表中其它行都不匹配时,就按缺省路由条目规定的接口发送到下一跳地址.

在这里插入图片描述
举例:
在这里插入图片描述
在这里插入图片描述
Take the picture above as an example
在这里插入图片描述

Understanding the Data Link Layer from a Local Area Network Perspective

Summarize the functions of each layer

IPThe main function is to go through every router,When the path is selectedIP说了算!And how to jump the packet to the next hop,is determined by the link layer,As for the hair wrong,how much isTCP决定的!
在这里插入图片描述

以太网数据帧(MAC帧)格式

“以太网” 不是一种具体的网络, 而是一种技术标准; 既包含了数据链路层的内容, 也包含了一些物理层的
内容. 例如: 规定了网络拓扑结构, 访问控制方式, 传输速率等;
例如以太网中的网线必须使用双绞线; 传输速率有10M, 100M, 1000M等;
以太网是当前应用最广泛的局域网技术; 和以太网并列的还有令牌环网, 无线LAN等;
在这里插入图片描述
源地址和目的地址是指网卡的硬件地址(也叫MAC地址), 长度是48位,是在网卡出厂时固化的;
帧协议类型字段有三种值,分别对应IP、ARP、RARP;
帧末尾是CRC校验码.

认识MAC地址

MACThe address is used to identify the data link layer相连的节点;
长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址)
在这里插入图片描述

Transfer processes within each local area network

在这里插入图片描述

对比理解MAC地址和IP地址

(广域网)IP地址描述的是路途总体的 起点 和 终点;
(局域网)MAC地址描述的是路途上的每一个区间的起点和终点(因为MACFrames are unpacked and repacked each time,pass to next hop)

认识MTU

MTU相当于发快递时对包裹尺寸的限制. 这个限制是不同的数据链路对应的物理层, 产生的限制
以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据包的长度不够46字节,要在后面补填充位;
最大值1500称为以太网的最大传输单元
(MTU),不同的网络类型有不同的MTU;
如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包进行分片(fragmentation);
不同的数据链路层标准的MTU是不同的
在这里插入图片描述

MTU对UDP协议的影响

一旦UDP携带的数据超过1472(1500 - 20(IP首部) - 8(UDP首部)), 那么就会在网络层分成多个IP数据报.
这多个IP数据报有任意一个丢失, 都会引起接收端网络层重组失败. 那么这就意味着, 如果UDP数据报在网络层被分片, 整个数据被丢失的概率就大大增加了.

MTU对于TCP协议的影响

TCP的一个数据报也不能无限大, 还是受制于MTU. TCP的单个数据报的最大消息长度, 称为MSS(Max Segment Size);
TCP在建立连接的过程中, 通信双方会进行MSSBefore the negotiation and negotiation about the window size
最理想的情况下, MSS的值正好是在IP不会被分片处理的最大长度(这个长度仍然是受制于数据链路层的MTU).
双方在发送SYN的时候会在TCP头部写入自己能支持的MSS值.
然后双方得知对方的MSS值之后, 选择较小的作为最终MSS.
MSS的值就是在TCP首部的40字节变长选项中(kind=2);

ARP协议(通过IPGet the address of the corresponding hostMAC地址)

我们上面总结了,Data transmission is actually the process of going from one local area network to another local area network
那么想一想:As mentioned above, LAN communication is requiredMAC帧的,The two hosts first communication is how to know each otherMAC地址的?这就是ARP协议的作用.
ARP协议建立了主机 IP地址 和 MAC地址 的映射关系.
在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址;
数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃;
因此在通讯前必须获得目的主机的硬件地址

ARR协议在哪一层?(数据链路层)

在这里插入图片描述

ARP协议的工作流程

在这里插入图片描述
源主机发出ARP请求,询问“IP地址是192.168.0.1的主机的硬件地址是多少”, 并将这个请求广播到本地网段(以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF表示广播);
目的主机接收到广播的ARP请求,发现其中的IP地址与本机相符,则发送一个ARP应答数据包给源主机,将自己的硬件地址填写在应答包中;
每台主机都维护一个ARP缓存表,可以用arp -a命令查看.缓存表中的表项有过期时间(一般为20分钟),如果20分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求来获得目的主机的硬件地址

在这里插入图片描述

ARP数据报的格式

在这里插入图片描述
注意到源MAC地址、目的MAC地址在以太网首部和ARP请求中各出现一次,对于链路层为以太网的情况是多余的,但如果链路层是其它类型的网络则有可能是必要的.
硬件类型指链路层网络类型,1为以太网;
协议类型指要转换的地址类型,0x0800为IP地址;
硬件地址长度对于以太网地址为6字节;
协议地址长度对于和IP地址为4字节;
op字段为1表示ARP请求,op字段为2表示ARP应答.

Below is a brief sketch of the communication process
在这里插入图片描述
在这里插入图片描述
总结:After the data to the last one subnet,路由器可以通过ARPagreement foundIP主机的MAC地址,data can be successfully delivered
ARPThe process is not only between the ingress router and the target host,also occurs between routersARP协议,Because it is necessary to traverse to find the corresponding host,So any time on the road is possibleARP

DNS(是一整套从域名映射到IP的系统)

We visit is simplywww.baidu.comIn fact, it is the access port+IP只不过用DNSTechnology helped us pack it,Easy to remember

域名简介

com: 一级域名. 表示这是一个企业域名. 同级的还有 “net”(网络提供商), “org”(非盈利组织) 等.
baidu: 二级域名, 公司名.
www: 只是一种习惯用法. 之前人们在使用域名时, 往往命名成类似于ftp.xxx.xxx/www.xxx.xxx这样的格式, 来表示主机支持的协议

ICMP协议(网络层协议)

一个新搭建好的网络, 往往需要先进行一个简单的测试, 来验证网络是否畅通; 但是IP协议并不提供可靠传输. 如果丢包了, IP协议并不能通知传输层是否丢包以及丢包的原因
在这里插入图片描述
ICMPMainly used to check network communication problems; ICMP主要功能包括:
1.确认IP包是否成功到达目标地址.
2.通知在发送过程中IP包被丢弃的原因.
3.ICMP也是基于IP协议工作的. 但是它并不是传输层的功能, 因此人们仍然把它归结为网络层协议;
4.ICMP只能搭配IPv4使用. 如果是IPv6的情况下, 需要是用ICMPv6

基于ICMP协议的命令

1.ping命令

在这里插入图片描述
注意, 此处 ping 的是域名, 而不是url! 一个域名可以通过DNS解析成IP地址.
ping命令不光能验证网络的连通性, 同时也会统计响应时间和TTL(IP包中的Time To Live, 生存周期).
ping命令会先发送一个 ICMP Echo Request给对端;
对端接收到之后, 会返回一个ICMP Echo Reply;

在这里插入图片描述

一个值得注意的坑

有些面试官可能会问: telnet是23端口, ssh是22端口, 那么ping是什么端口
ping命令基于ICMP, 是在网络层. 而端口号, 是传输层的内容. 在ICMP中根本就不关注端口号这样的信息

traceroute命令

也是基于ICMP协议实现, 能够打印出可执行程序主机, 一直到目标主机之前经历多少路由器
The basic principle is to set the messageTTL,From a constant accumulation, you can find the nearby distance yourselfTTLlength of host up

在这里插入图片描述

NAT(前面有讲)和代理服务器

路由器往往都具备NAT设备的功能, 通过NAT设备进行中转, 完成子网设备和其他子网设备的通信过程.
代理服务器看起来和NAT设备有一点像. 客户端像代理服务器发送请求, 代理服务器将请求转发给真正要请求的服务器; 服务器返回结果后, 代理服务器又把结果回传给客户端

那么NAT和代理服务器的区别有哪些呢?
从应用上讲, NAT设备是网络基础设备之一, 解决的是IP不足的问题. 代理服务器则是更贴近具体应用, 比如通过代理服务器进行翻墙, 另外像迅游这样的加速器, 也是使用代理服务器.
从底层实现上讲, NAT是工作在网络层, 直接对IP地址进行替换. 代理服务器往往工作在应用层.
从使用范围上讲, NAT一般在局域网的出口部署, 代理服务器可以在局域网做, 也可以在广域网做, 也可以跨网.
从部署位置上看, NAT一般集成在防火墙, 路由器等硬件设备上, 代理服务器则是一个软件程序, 需要部署在服务器上

正向代理(靠近客户端)

such as our campus network,People in our school who want to connect to the campus network first need to(The first point below)登录账号和密码,When the proxy server finds that a resource is repeatedly requested,He will package us inside the server to save,When accessing external resources through proxy server again,You can transfer it directly to us through the intranet(Second point below),Speed ​​up access
When we visit a website, the proxy server will first perform a security check for us,Prevent us from being attacked by malicious websites(The third point below)
在这里插入图片描述

反向代理(靠近服务端)

Realize the function of load balancing and prevent the server from being maliciously attacked!
在这里插入图片描述

Drawing a brief description of the principle of proxy server overcoming the wall(just to learn knowledge,别无他想)

在这里插入图片描述

copyright notice
author[Cola_Forever],Please bring the original link to reprint, thank you.
https://en.cdmana.com/2022/218/202208061856509403.html

Random recommended