网络原理(5)——IP协议(网络层)

这篇具有很好参考价值的文章主要介绍了网络原理(5)——IP协议(网络层)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、IP协议报头介绍

1、4位版本

2、4位首部长度

3、8位服务器类型

4、16位总长度

5、16位标识位

6、3位标志位

7、13位偏移量

8、8位生存空间

9、8位协议

10、16位首部检验和

11、32位源IP地址

12、32位目的IP地址

二、IPv4数量限制的解决方案(地址管理)

  1、动态分配IP地址

  2、NAT 机制(网络地址映射)

(1)NAT机制的介绍

(2)局域网设备如何访问广域网广域网(发送请求)

(3)广域网设备如何返回响应给局域网设备(返回响应)

1、不同局域网的不同设备访问同一服务器

2、不同局域网的不同设备访问不同服务器

3、同一局域网的不同设备访问同一服务器(不同进程)

4、同一局域网的不同设备访问同一服务器(同一进程)

  3、使用IPv6(从根本上解决问题)


      目前学习的IP协议叫做 TCP/IP 协议族,或者 TCP/IP 协议栈。而对于IP协议,不做详细介绍,主要介绍其IP协议的报头和地址如何分配问题。

        IP协议,主要完成的工作:1、地址管理使用一套地址体系,来描述互联网上每个设备所处的位置(电脑、手机、路由器、服务器都会有IP地址,经典的交换机没有IP地址)2、路由选择(一个数据包,如何从网络中的某个地址,传输到另一个地址)。


一、IP协议报头介绍

        报头内信息如图

网络原理(5)——IP协议(网络层),网络,tcp/ip,服务器

        以下是IP报头内的信息介绍

1、4位版本

        IPv4和IPv6,其中IPv4是主流的IP协议版本。

2、4位首部长度

        表示IP头部的长度(报头),也是可以变长的,单位是 4字节。

3、8位服务器类型

        里面包含3位优先权字段、1位保留位字段、4位TOS字段,(TOS)表示当前IP协议所处的模式,有以下4种:最小延时、最大吞吐量、最高可靠性、最小成本(硬件设备的开销)。

4、16位总长度

        描述一个IP数据报的长度,IP报头+载荷,这里因为16位大小,是否意味着IP数据报的大小只能64KB了呢?其实不然,传输的数据报如果大于64KB,就会把它们拆成几个数据报,再进行传输,如图:

网络原理(5)——IP协议(网络层),网络,tcp/ip,服务器

        将一个TCP数据报拆分成多个IP数据报进行传输,就是多个IP数据报携带应该TCP数据报(IP的拆包并不是因为达到64K,而是在数据链路层还有限制),那么问题来了,拆分后怎么组包呢?下面5、6、7就是介绍组包的信息。

5、16位标识位

        表示被拆分多个的数据报,里面的载荷应该在哪里组合(放到哪里一起组合)。

6、3位标志位

        表示该数据报里的载荷是否已经组织,只有2位是有效的,其中1位表示这次的IP是否拆包了,还有1位表示结束标记(IP数据报里被拆分的载荷是不是最后一个)。

7、13位偏移量

        被拆分的数据报在IP数据包中,描述这些数据包之间的顺序

8、8位生存空间

        这里的单位不是 s / ms,而是 次数,这里存储的是一个整数,一个IP数据报,每次经过一个路由器,这里就会 -1,如果减到0,这个包就要被丢了,不能再继续传输下去。其中有一个考虑,就是为了防止环路,如果这个数据报出现异常,在网络中循环乱串,找不到目的地,这样就会增加网络的负担,浪费宝贵的网络资源。

        这里的IP数据报每经过一次路由器,TTL就会-1,当这个数值减到0,就要丢包了,而这个TTL数值一般是32 / 64,就足够当前网络的传输了(类似六度空间理论)。以下访问美国政府网站,看看要经过多少个节点。

        在CMD控制平台输入:tracert + 网站网址,如图:

网络原理(5)——IP协议(网络层),网络,tcp/ip,服务器

        从广东这边访问到美国那边的政府网址,只需经过上面25个节点,并且最多只要30个,说明这里TTL是32就够用了。上面有些设备关闭了 “ICMP 功能” ,所以会看到求请超时,但不影响tracert的执行。

9、8位协议

        表示传输层使用的是哪个协议(UDP / TCP)

10、16位首部检验和

        这里只针对IP的首部校验,不会对载荷进行校验,因为载荷的是TCP数据报,里有TCP报头,会自动校验

11、32位源IP地址

        我们要学习的最核心的地方,表示发件人的地址

12、32位目的IP地址

        我们要学习的最核心的地方,表示收件人的地址


二、IPv4数量限制的解决方案(地址管理)

        IP地址本质是一个32位的整数,为了方便,采用点分十进制的方式进行分隔,通过3个点,将其分成4个部分,例如192.168.0.1;每一个部分为1字节,取值范围:0~255;而32位能表示的最大数是:2^32 -> 43亿9千万这是IPv4的,IPv6则大2^32倍);

        IP地址的目的就是区分网络上不同的通信设备,让每个通信设备的IP地址在网络上都是唯一的;但是43亿9千万够用吗,如今世界人口都有80亿,显然是不够用的。所以,就有以下方案解决IP地址不够用的问题。

  1、动态分配IP地址

        因为世界不同的地方,白天黑夜是不一样的,有时差;所以全世界不是同一时间使用通信设备的,所以就可以进行动态分配IP地址,进行网络通信的设备才给其分配IP地址,不通信的设备就不给其分配

        但是这个只是权宜之计,没有从根本上解决问题。

  2、NAT 机制(网络地址映射)

(1)NAT机制的介绍

NAT机制把IP分为了两大类:

        1、私网 IP / 局域网 IP

           IP地址是以“10.* ”,“172.16-172.31.*”,“192.168.*.*”

        2、公网 IP / 广域网 IP

           除了上面私网这种格式的IP地址,其他都是公网IP地址。

        这里要求,公网/广域网的IP地址不能重复,每个都是唯一的;而私网/局域网则不同,局域网要求同一个局域网内(连在同一个路由器)的IP不能有重复,但不同局域网的IP可以重复

        由于上述的设定,就有以下重要的限制:

(1)、公网设备访问公网设备没问题,可以直接访问。

(2)、局域网设备访问局域网设备(同一个局域网)没问题,可以直接访问。

(3)、局域网设备访问局域网设备(不同的局域网)不能访问。

(4)、局域网设备访问公网设备可以访问,但要对局域网设备的IP进行转换。

(5)、公网设备访问局域网设备不可以主动访问。

(2)局域网设备如何访问广域网广域网(发送请求)

        这里简单介绍一下,局域网设备访问公网设备是要经过路由器的,而这个路由器有LAN口和WAN口;LAN口是你连接的设备,你家里的电脑接这个口就相当于你家里的设备构成了局域网;而WAN口是连接运营商那边的网线的,相当于你的设备出路由器就是访问广域网了;如图:

网络原理(5)——IP协议(网络层),网络,tcp/ip,服务器

        那路由器是怎么把局域网IP和广域网IP连接起来的呢?如图:

网络原理(5)——IP协议(网络层),网络,tcp/ip,服务器

        经过上面的转换,也就可以使公网上的每个IP都是唯一的了本质也就是让一个公网IP可以对应多个设备IP

        说个题外话,以前的百度贴吧,就有个封IP功能,但一旦封了后,就会导致一大批的用户莫名其妙的在某个吧上发不了言,原因就是封了路由器的IP,然后很多设备访问贴吧,也是要经过哪个路由器的,在很久以前,还挺常见的。

        那返回响应的时候是如何转换的呢?以下内容介绍。

(3)广域网设备如何返回响应给局域网设备(返回响应)

        路由器这里有个表,里面包含的信息如图:

网络原理(5)——IP协议(网络层),网络,tcp/ip,服务器

        有了这个表,就能找到是哪个设备发出的请求,给它返回响应了。有以下不同场景。

1、不同局域网的不同设备访问同一服务器

        因为是不同的局域网,所以连得路由器是不一样的,所以这里返回的响应能通过不同路由器转换IP对应到不同设备的IP,无需担心会有相同路由器转换成一样的IP,也无需担心有进程的端口号是否一样的问题,因为能通过IP就能找到对应的设备了。

2、不同局域网的不同设备访问不同服务器

        和第一个的情况一样

3、同一局域网的不同设备访问同一服务器(不同进程)

    如图:

网络原理(5)——IP协议(网络层),网络,tcp/ip,服务器

        返回响应时,因为经过同一个路由器,所以转换回来的IP会一样,但是因为他们的目的端口不一样,就可以根据端口区分这两个响应返回给哪个设备了。

4、同一局域网的不同设备访问同一服务器(同一进程)

        如图:

网络原理(5)——IP协议(网络层),网络,tcp/ip,服务器

        这里经过的两个设备发出的请求虽然经过路由器的转换IP是一样的,而且他们进程的端口号也相同,但是经过路由器转换,可以替换成不同的端口号,就可以区分不同的响应该发给谁了

        这里有个理论上存在,实践中不存在的问题:如果请求的主机过多,分配的端口号超过65535了,这时候经过路由器转换回来的IP是重复的,端口号也是有重复的,咋办?其实在NAT机制的管控下,端口号是够用的,而且运营商在部署网络,也会控制NAT设备管辖的设备数量,设备如果太多,有几百万个,就会多搞几个NAT,多搞几个外网IP。而且出现这种的概率极低,理论上有,但是实践上不会出现这种问题

        但这也只是个权宜之计,不能从根本上解决问题,但效果也还不错。

  3、使用IPv6(从根本上解决问题)

        IPv4使用4个字节表示IP地址,有 42亿9千万(2^32)个IP地址;

        IPv6使用16个字节表示IP地址,有2^128个IP地址;这个数量有多大呢?举个例子,如果我们把地球的每粒沙子都给它分配一个IP地址,都用不完,而我们的计算机设备的主要材料有二氧化硅,这个材料也是从沙子里转换过来的,想象我们的电脑是沙子的子集,全集都用不完,子集肯定更加用不完

        所以IPv6是可以从根本上解决问题。但是能不能把IPv4升级到IPv6呢?答案是技术上很容易实现,但现实很困难,因为这个升级只是增加了IP地址的数量,并不会加快网速,而且还很费钱,是一个吃力不讨好的事情(路由器、交换机、计算机里的硬件设备、手机等等都要进行升级)。是一个很大的工程,如果要升级,相关的企业就要花很多钱。同时用户也要更新设备,因为升级后可能导致IPv4和IPv6不兼容,用户也可能要花钱

        但是我们国家的IPv6的覆盖程度已经到70%了,原因就是国家出台了强制性的政策,强制要求我国的三大运营商进行升级,原因可以参考棱镜门事件,怕被美国打压。文章来源地址https://www.toymoban.com/news/detail-846173.html


        都看到这了,点个赞再走吧,谢谢谢谢谢!!!

到了这里,关于网络原理(5)——IP协议(网络层)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • TCP IP网络编程(五) 基于TCP的服务器端、客户端 (补充)

    回声客户端出现的问题 在上一节基于TCP的服务器端、回声客户端中,存在问题: 如果数据太大,操作系统就有可能把数据分成多个数据包发送到客户端,客户端有可能在尚未收到全部数据包时就调用read函数 问题出在客户端,而不是服务器端,先来对比一下客户端与服务器端

    2024年02月09日
    浏览(63)
  • 《TCP/IP网络编程》阅读笔记--基于TCP的服务器端/客户端

    目录 1--TCP/IP协议栈 2--TCP服务器端默认函数调用顺序 3--TCP客户端的默认函数调用顺序 4--Linux实现迭代回声服务器端/客户端 5--Windows实现迭代回声服务器端/客户端 6--TCP原理 7--Windows实现计算器服务器端/客户端         TCP/IP协议栈共分 4 层,可以理解为数据收发分成了 4 个层

    2024年02月10日
    浏览(59)
  • Socket网络编程(TCP/IP)实现服务器/客户端通信。

    一.前言 回顾之前进程间通信(无名管道,有名管道,消息队列,共享内存,信号,信号量),都是在同一主机由内核来完成的通信。 那不同主机间该怎么通信呢? 可以使用Socket编程来实现。 Socket编程可以通过网络来实现实现不同主机之间的通讯。 二.Socket编程的网络模型如

    2024年02月08日
    浏览(83)
  • 《TCP/IP网络编程》阅读笔记--基于UDP的服务器端/客户端

    目录 1--TCP和UDP的主要区别 2--基于 UDP 的数据 I/O 函数 3--基于 UDP 的回声服务器端/客户端 4--UDP客户端Socket的地址分配 5--UDP存在数据边界 6--UDP已连接与未连接的设置 ① TCP 提供的是可靠数据传输服务,而 UDP 提供的是不可靠数据传输服务; ② UDP 在结构上比 TCP 更简洁,其不会

    2024年02月09日
    浏览(58)
  • FPGA实现 TCP/IP 协议栈 服务器 纯VHDL代码编写 提供4套vivado工程源码和技术支持

    FPGA实现 TCP/IP 协议栈 服务器 纯VHDL代码编写 提供4套vivado工程源码和技术支持 没玩过TCP网络通信都不好意思说自己玩儿过FPGA,这是CSDN某大佬说过的一句话,鄙人深信不疑。。。目前网上fpga实现udp协议的源码满天飞,我这里也有不少,但用FPGA纯源码实现TCP的项目却很少,能上

    2024年02月04日
    浏览(48)
  • Linux网络编程之TCP/IP实现高并发网络服务器设计指南

    目录 引言: 多进程服务器 例程分享: 多线程服务器  例程分享: I/O多路复用服务器 select 例程分享: poll 例程分享: epoll 例程分享: 总结建议         随着互联网的迅猛发展,服务器面临着越来越多的并发请求。如何设计一个能够高效处理大量并发请求的服务器成为

    2024年02月20日
    浏览(50)
  • 【网络原理】TCP/IP协议

    目录 1.应用层 2.传输层(核心问题) 2.1 UDP协议 2.1.2 UDP的特点 2.1.3 基于UDP的应用层协议 2.2 TCP协议(重点内容) 2.2.1 TCP/IP 协议含义 2.2.2 TCP协议端格式: 2.2.3 TCP的特点 2.3 TCP原理 2.4 确认应答机制(安全机制) 2.5 超时重传机制(安全机制) 2.5.1 数据直接丢了,接收方没

    2023年04月13日
    浏览(52)
  • 【网络原理】TCP/IP协议(续)

    目录 🔥网络层重点协议(IP 协议) 一、地址管理 1.如何解决上述地址不够用问题? 2.NAT 机制 2.1 NAPT 2.2 在 NAT 背景下如何通信? 3.IPv6 4.IP地址 4.1 ABCDE类 4.2 子网掩码 4.3 特殊的 IP 地址 二、路由选择 1.路由器 1.1 网关 1.2 路由 🌴数据链路层重点协议 1.以太网 1.1 认识以太网

    2023年04月19日
    浏览(61)
  • 《TCP/IP网络编程》阅读笔记--基于Windows实现Hello Word服务器端和客户端

    目录 1--Hello Word服务器端 2--客户端 3--编译运行 3-1--编译服务器端 3-2--编译客户端 3-3--运行 运行结果:

    2024年02月10日
    浏览(61)
  • FPGA实现10G万兆网TCP/IP 协议栈,纯VHDL代码编写,提供服务器和客户端2套工程源码和技术支持

    目前网上fpga实现udp协议的源码满天飞,我这里也有不少,但用FPGA纯源码实现TCP的项目却很少,能上板调试跑通的项目更是少之又少,甚至可以说是凤毛菱角,但很不巧,本人这儿就有一个; 本设采用纯VHDL实现了10G万兆网TCP/IP协议栈,该协议栈分为TCP服务器核客户端,没有使

    2024年02月09日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包