Linux 15:网络编程3,Linux网络编程pdf

Linux 15:网络编程31. 网络层 在复杂的网络环境中确定一个合适的路径。
1-1. IP协议 1-1-1. 基本概念
主机:配有IP地址,但是不进行路由控制的设备。 路由器:即配有IP地

1.网络层

在复杂的网络环境中确定合适的路径。

1-1.IP协议

1-1-1.基本概念

主机:具有IP地址但不控制路由的设备。

路由器:有IP地址,可以控制路由。

节点:主机和路由器的统称。

1-1-2.协议头格式

4位版本号(version):指定IP协议版本。 4 用于IPv4。 4位数字的报头长度(Header Length):表示IP报头的长度,或者说是32位中的多少位。 * 4 字节数。 4位表示的最大数字为15,因此IP报头的最大长度为60字节。 8 位服务类型:3 位优先级字段(已弃用)、4 位TOS 字段和1 位保留字段(必须设置为0)。每个四位TOS 代表最小延迟、最大吞吐量、最大可靠性和最小成本。这四项是互斥的,只能选择一项。对于ssh/telnet 等应用程序,最小延迟更重要,而对于ftp 等程序,最大吞吐量更重要。 16位总长度:整个IP数据报占用的字节数。 16位标识(id):唯一标识主机发送的消息。当IP数据包在数据链路层被分片时,每个分片具有相同的ID。三位数标志字段:第一位保留(保留表示当前未使用,但将来可能会使用)。第二位为1,表示禁止分片。此时,如果报文长度超过MTU,IP模块将丢弃该报文。第三位代表“更多片段”。如果分片,则最后一个分片设置为1,其他分片设置为0。类似于结束标签。 13 位分片偏移(帧段偏移):分片相对于原始IP 消息开头的偏移量。事实上,这指示了当前片段在原始消息中的位置。实际偏移量(以字节为单位)通过该值* 8 获得。因此,除了最后一条消息外,其他消息的长度都必须是8的整数倍(否则消息不连续)。 8 位生存时间(TTL):数据报到达目的地的最大跳数。通常为64。每次遍历该路由时,它都会变成TTL -=1,如果减到0而尚未到达,则将其丢弃。该字段主要用于防止路由环路。 8位协议:表示上层协议的类型。 16 位标头校验和:使用CRC 进行验证,以确定标头是否损坏。 32位源地址和32位目的地址:代表发送方和接收方。可选字段(可变长度,最大40字节):省略。

1-1-3.网段划分(重要)

IP地址分为两部分:网络号和主机号。

网络ID:确保相互连接的两个网段具有不同的ID。主机号:同一网段内,主机的网络号必须相同,但主机号不同。

实际上,具有相同网络号的主机被分组在不同的子网中。当子网中添加新主机时,该主机的网络号将与子网的网络号相同,但主机号不能相同。其他主机的子网。

正确设置主机和网络号可确保互连网络中的每台主机都具有不同的IP 地址。

问题来了。手动管理子网内的IP 可能非常繁琐。

DHCP 技术允许您自动将IP 地址分配给子网中的新主机节点,从而避免手动IP 管理的不便。大多数路由器都具有DHCP 功能。因此,路由器也可以被视为DHCP服务器。

之前提出了一种方案,将网络号和主机号进行拆分,将所有IP地址分为五类,如下图所示(该图摘自[TCPIP]):

A 类0.0.0.0 ~ 127.255.255.255 B 类128.0.0.0 ~ 191.255.25.255 C 类192.0.0.0-223.255.255 D 类224.0.0.0-255.255 E 类240.0。 0.0247.255.255.255

互联网的快速发展很快就暴露了这种划分方案的局限性,大多数组织都申请B类网络地址,这导致大量A类地址被浪费。

例如,如果您申请B 类地址,理论上您的子网中可以允许超过65,000 台主机。 A 类地址在子网中拥有更多的主机。但在实际网络建设中,单个子网内的数量并不多。因此,大量的IP地址被浪费。

针对这种情况,提出了一种新的划分方法,称为CIDR(无类域间路由):

引入额外的子网掩码来区分网络号和主机号。子网掩码也是一个32 位正整数。通常以“0”字符串结尾。当您对IP 地址和子网掩码执行“按位AND”运算时,结果是网络号。网络号和主机号之间的划分与IP 地址是A 类、B 类还是C 类无关。

可以看到,网络号可以通过IP地址和子网掩码进行AND运算得到。从全0到全1的主机号是子网地址范围。

IP地址和子网掩码有更简洁的表达方式,如140.252.20.68/24。这意味着IP 地址为140.252.20.68,子网掩码的高24 位为1,即255.255.255.0。

1-1-4.特殊的IP地址

将IP 地址中的所有主机地址设置为0 会产生代表该局域网的网络号。将IP地址中的所有主机地址设置为1就成为用于连接的广播地址。所有主机在同一链路上发送数据包。 IP地址127.*用于本地环回测试(通常为127.0.0.1)。

1-1-5.IP地址的数量限制

我们知道IP地址(IPv4)是一个4字节32位的正整数。在这种情况下,总共只有2^32 个IP 地址,即大约43 亿个。 TCP/IP 协议规定每台主机都必须有一个IP 地址。

这是否意味着总共只有43亿台主机可以访问网络?

事实上,这个数字远低于43亿,因为有一些特殊的IP地址。另外,IP地址并不是根据主机数量来配置的;每块网卡至少必须配置一个IP。地址。

CIDR在一定程度上缓解了IP地址短缺问题(提高了利用率,减少了浪费,但并没有提高IP地址的绝对限制),但仍然不够。有三种方法可以解决这个问题。

动态分配IP 地址:仅将IP 地址分配给连接到网络的设备。因此,具有相同MAC 地址的设备不一定每次连接互联网时都会获得相同的IP 地址。 NAT 技术(稍后详细介绍)。 IPv6:IPv6不仅仅是IPv4的升级版本。这是两个不相关的协议并且彼此不兼容。 IPv6 使用16 字节和128 位来表示IP 地址,但IPv6 尚未普及。

1-1-6.私有IP地址和公网IP地址

在组织内构建LAN 时,IP 地址仅用于LAN 内的通信,绝不会直接连接到Internet。尽管理论上您可以使用任何IP 地址,但RFC 1918 指定了用于构建LAN 的专用IP 地址。

如果将它们与路由表中的前几项进行比较,您会发现它们都不匹配。根据默认路由条目,它来自eth0 接口,前往192.168.10.1 路由器。 192.168.10.1 路由器根据其路由表确定下一跳地址。

1-1-7.路由

用于两个设备(相同类型的数据链路节点)之间的传输。

2.数据链路层

“以太网”并不是一个具体的网络,而是一种技术标准,既包括数据链路层内容,也包括一些物理层内容。例如,它规定了网络拓扑、访问控制方法、传输速度等。例如,以太网网线必须使用双绞线,传输速度为10M、100M、1000M等。以太网是当今使用最广泛的局域网技术,还有令牌环网络和无线LAN。

2-1.认识以太网

以太网帧格式如下。

源地址和目标地址是指网卡的硬件地址(也称为MAC 地址)。该地址长度为48 位,在网卡出厂时就已固定。帧协议类型字段有三个值,分别对应IP、ARP、RARP。帧末尾有一个CRC校验码。

2-2.以太网帧格式

MAC地址用于识别数据链路层连接的节点。长度为48 位或6 个字节。通常表示为十六进制数字和冒号(例如,08:00:27:03:fb:19)。这是网卡出厂时确定的,无法更改。 MAC 地址通常是唯一的(虚拟机的MAC 地址不是其实际的MAC 地址,因此可能会发生冲突;某些网卡还支持用户配置MAC 地址)。

比较并了解MAC 地址和IP 地址。

IP地址代表整个路由的起点和终点。 MAC地址代表每段道路的起点和终点。

2-3.认识MAC地址

MTU对应的是发送快递时的包裹尺寸限制。这种限制是由不同数据链路对应的物理层造成的。

以太网帧的数据长度规定为最小46字节,最大1500字节。由于ARP数据包长度小于46字节,因此必须在末尾添加填充位。最大值1500 称为以太网最大传输单元(MTU),MTU 根据网络类型而变化。如果数据包从以太网路由到拨号链路,并且数据包的长度大于拨号链路的MTU,则必须对数据包进行分片。不同的数据链路层标准有不同的MTU。

3.认识MTU

由于数据链路层MTU限制,较大的IP数据包必须进行分包。

将一个大的IP 数据包拆分为多个较小的数据包,并为每个较小的数据包添加标签。每个数据包的IP协议头中的16位标识符(id)是相同的。每个数据包的IP协议头中的3位标志字段中,第二位为0表示允许分片,第三位为结束标记(是否是最后一个小数据包,如果是)。设置为1;否则设置为0)。一旦到达另一侧,这些小数据包将按顺序重新组装并捆绑回传输层。如果这些数据包中的任何一个丢失,接收方的重组将会失败。然而,IP层不负责重传数据。

3-1.MTU对IP协议的影响

我们先来看看UDP协议。

如果UDP承载的数据超过1472(1500 – 20(IP头) – 8(UDP头)),则在网络层被分割成多个IP数据报。如果这些多个IP数据报中的任何一个丢失,则接收端的网络层重建失败。这意味着当UDP数据报在网络层被分片时,丢失整个数据的机会显着增加。

3-2.MTU对UDP协议的影响

我们再回顾一下TCP协议。

TCP 数据报不能无限大,并且仍然受MTU 的影响。 TCP中单个数据报的最大消息长度称为MSS(MaxSegment Size)。在建立TCP连接的过程中,通信双方进行MSS协商。理想情况下,MSS值恰好匹配IP不会被分片的最大长度(该长度受数据链路层MTU影响)。发送SYN时,双方都将自己能够支持的MSS值写入TCP头中。然后,双方获悉对方的MSS值后,选择较小的作为最终的MSS。 MSS 值位于TCP 标头的40 字节可变长度选项中(kind=2)。

使用ifconfig 命令显示IP 地址、MAC 地址和MTU。

3-3.MTU对于TCP协议的影响

虽然我们这里介绍了ARP协议,但是需要强调的是,ARP并不是一个纯粹的数据链路层协议,而是一个介于数据链路层和网络层之间的协议。

4.ARP协议

ARP协议建立主机IP地址和MAC地址之间的映射关系。

网络通信时,源主机上的应用程序知道目的主机的IP地址和端口号,但不知道目的主机的硬件地址。数据包首先由网卡接收,然后由高层协议处理。如果接收到的数据包的硬件地址与本机不匹配,则直接丢弃该数据包。因此,通信前需要获取目的主机的硬件地址。

4-1.ARP协议的作用

源主机发送ARP 请求询问“IP 地址为192.168.0.1 的主机的硬件地址是多少?”,并将该请求广播到本地网段(以太网帧头中的硬件地址为)。 FF:FF:FF:FF:FF:FF 表示广播)。当目标主机收到广播ARP 请求并验证IP 地址与自己的IP 地址匹配时,它会向源主机发送ARP 响应数据包,并在响应数据包中填充自己的硬件地址。每台主机都维护着一张ARP缓存表,可以使用arp -a命令查看。缓存表中的条目有一个过期时间(一般是20分钟),如果一个条目在20分钟内没有被再次使用,那么它就会失效,下次发出ARP请求时必须获取目的主机的硬件地址。被发送。

4-2.ARP协议的工作流程

如果链路层是以太网,则在以太网报头和ARP 请求中出现一次的源和目标MAC 地址是多余的,但如果链路层是其他类型的网络,则可能需要。硬件类型是指链路层网络类型,其中1为以太网。协议类型是指被转换的地址类型,0x0800是IP地址。对于以太网地址来说,硬件地址的长度为6 个字节。 IP地址协议地址的长度为4字节。 op字段为1表示ARP请求,op字段为2表示ARP响应。

4-3.ARP数据报的格式

5.其他重要协议或技术

DNS 是将域名映射到IP 的完整系统。

5-1.DNS(Domain Name System)

一种TCP/IP 程序,使用IP 地址和端口号来识别网络上的主机。然而,IP 地址很难记住。

于是人们发明了一个叫做主机名的东西,它是一个字符串,并使用hosts文件来描述主机名和IP地址之间的关系。

最初,该主机文件通过Internet 信息中心(SRI-NIC) 进行管理。

如果您想将一台新计算机连接到您的网络,或者您的计算机的IP发生变化,您将需要向信息中心申请更改hosts文件。其他计算机也必须定期下载并更新新版本的主机文件才能正常访问互联网。

这样就麻烦了,所以我创建了一个DNS系统。

您组织的系统管理组织为系统中的每个主机维护IP 到主机名的映射。当一台新计算机连接到网络时,其信息将被输入到数据库中。当用户输入域名时,会自动查询DNS服务器,DNS服务器检索数据库,检索出对应的IP地址。

直到今天,hosts 文件仍然驻留在您的计算机上。在域名解析过程中,也会首先查找hosts文件的内容。

猫/etc/hosts

5-1-1.DNS背景

主域名是一个分层名称,用于标识主机名和主机所属的组织。

百度网

域名使用连接。

com:一级域名。表明这是一个公司域名。类似的级别包括“net”(网络提供商)和“org”(非营利组织)。 baidu:二级域名,公司名称。 www:只是常见用法。过去,域名通常以ftp.xxx.xxx/www.xxx.xxx 等格式给出,以指示主机支持的协议。

5-1-2.域名简介

挖www.baidu.com

结果应该是这样的:

结果解读:

第一个位置是dig 命令的版本号。第二部分是服务器返回的详细信息。重要的是,NOERROR 意味着查询成功。 QUESTION SECTION 表示要查询的域名。 ANSWER SECTION 告诉您查询结果是什么。这个结果首先查询www.baidu.com到www.a.shifen.com,然后再查询www.a.shifen.com到两个IP地址。在底部,您将看到结果统计信息,例如查询时间和DNS 服务器地址。

5-1-3. 使用 dig 工具分析 DNS 过程

ICMP 协议是网络层协议。

新建网络往往需要先进行快速测试,以确保网络畅通,但IP协议并不能提供可靠的传输。如果数据包丢失,IP协议无法通知传输层数据包是否丢失以及数据包丢失的原因。

5-2.ICMP协议

ICMP 是提供此功能的协议。 ICMP的主要特点是:

检查IP报文是否成功到达目的地址。告知您IP 数据包在传输过程中被丢弃的原因。 ICMP 也基于IP 协议运行。不过,由于这不是传输层功能,因此仍然认为是网络层协议造成的。 ICMP 只能与IPv4 一起使用。对于IPv6,您必须使用ICMPv6。

5-2-1.ICMP功能

请注意,这里ping 的是域名,而不是URL。 ping 命令不仅可以通过DNS 解析到IP 地址,还可以统计响应时间和TTL。 IP 数据包生命周期,生命周期)。 ping命令首先向对端发送ICMP echo请求,对端收到后返回ICMP echo应答。

5-5-2.ping命令

它也是基于ICMP协议实现的,可以打印可执行程序的主机以及它到达目标主机所经过的路由器数量。

5-5-3.traceroute命令

6.NAT技术

之前,我们讨论了IPv4 协议没有足够的IP 地址的问题。

NAT技术是目前解决IP地址短缺问题的主要方法,是路由器的一个重要特性。

NAT 可以在与外界通信时将私有IP 转换为全局IP。换句话说,它是一种将私有IP和全局IP相互转换的技术方法。许多学校、家庭和企业在每台设备上设置私有IP,并在路由器和必要的服务器上设置全局IP。全局IP 必须是唯一的,但私有IP 不是必需的。在不同的局域网中拥有相同的私有IP根本没有任何影响。

6-1.NAT技术背景

NAT 路由器将源地址10.0.0.10 替换为全局IP 202.244.174.37。当NAT路由器接收到外部数据时,会将目标IP从202.244.174.37替换为10.0.0.10。在NAT 路由器内部,有自动生成的地址转换表。当10.0.0.10第一次向163.221.120.9发送数据时,表中会生成映射关系。

6-2.NAT IP转换过程

问题来了。如果局域网内的多台主机访问同一台外部服务器,则该服务器返回的数据将具有相同的目的IP。那么NAT路由器如何决定将这个数据包转发到哪一个LAN主机呢?

NAPT就是为了解决这个问题而出现的。使用IP+端口来建立这种关联。

这种关联关系也是由NAT 路由器自动维护的。例如,对于TCP,该条目在建立连接时生成,并在连接断开时删除。

6-3.NAPT

因为NAT 依赖于这个转换表,所以它有很多限制。

无法建立从外部NAT 到内部服务器的连接。创建和销毁交换表需要额外的开销。如果NAT设备在通信处理过程中出现错误,即使有热备份,所有TCP连接也会被断开。

6-4.NAT技术的缺陷

路由器往往具有NAT设备的功能,通过NAT设备进行转发,完成子网设备与其他子网设备之间的通信过程。

代理服务器类似于NAT 设备。客户端向代理服务器发送请求,代理服务器将请求转发给实际发出请求的服务器。服务器返回结果后,代理服务器将结果发送回客户端。

那么NAT服务器和代理服务器有什么区别呢?

从应用角度来看,NAT设备是解决IP稀缺问题的基础网络设备。代理服务器靠近某些应用程序,例如绕过它们。像迅游这样的加速器也使用代理服务器。从底层实现来看,NAT工作在网络层,直接替代IP地址。代理服务器通常在应用程序层运行。从使用范围来看,NAT通常部署在局域网出口,代理服务器可以跨局域网、广域网或网络运行。从部署位置来看,NAT通常集成在防火墙或路由器等硬件设备中,而代理服务器是必须部署在服务器上的软件程序。

代理服务器是一种广泛使用的技术。

解决方法:WAN 代理。负载均衡:局域网内的代理。

代理服务器分为正向代理和反向代理。

购买示例:

花王纸尿裤是日本生产的非常经典的纸尿裤品牌。

自己去日本买尿布不方便,但是你可以让在日本工作的表弟去超市,买尿布,然后送到你手上。超市此时看到的买家是我的表弟,而我的表弟就是“过户代理”。

之后

找我表姐买尿不湿的人太多了,我表姐觉得天天去超市太麻烦,干脆去超市买了一大批尿不湿屯在家里,如果有人来找她代购,就直接把屯在家里的货发出去,而不必再去超市。此时我表姐就是 \”反向代理\”。

        正向代理用于请求的转发(例如借助代理绕过反爬虫)。
        反向代理往往作为一个缓存。 

7. 总结

7-1. 数据链路层

数据链路层的作用:两个设备(同一种数据链路节点)之间进行传递数据。以太网是一种技术标准;既包含了数据链路层的内容,也包含了一些物理层的内容。例如:规定了网络拓扑结构,访问控制方式,传输速率等。以太网帧格式。理解mac地址。理解arp协议。理解MTU。

7-2. 网络层

网络层的作用:在复杂的网络环境中确定一个合适的路径。理解IP地址,理解IP地址和MAC地址的区别。理解IP协议格式。了解网段划分方法。理解如何解决IP数目不足的问题,掌握网段划分的两种方案。理解私有IP和公网IP理解网络层的IP地址路由过程。理解一个数据包如何跨越网段到达最终目的地。理解IP数据包分包的原因。了解ICMP协议。了解NAT设备的工作原理。

7-3. 传输层

传输层的作用:负责数据能够从发送端传输接收端。理解端口号的概念。认识UDP协议,了解UDP协议的特点。认识TCP协议,理解TCP协议的可靠性。理解TCP协议的状态转化。掌握TCP的连接管理,确认应答,超时重传,滑动窗口,流量控制,拥塞控制,延迟应答,捎带应答特性。理解TCP面向字节流,理解粘包问题和解决方案。能够基于UDP实现可靠传输。理解MTU对UDP/TCP的影响。

7-4. 应用层

应用层的作用:满足我们日常需求的网络程序,都是在应用层。能够根据自己的需求, 设计应用层协议。了解HTTP协议。理解DNS的原理和工作流程。
#以上关于Linux 15:网络编程3的相关内容来源网络仅供参考,相关信息请以官方公告为准!

原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/94000.html

(0)
CSDN's avatarCSDN
上一篇 2024年7月26日 下午6:49
下一篇 2024年7月26日 下午7:21

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注