计算机网络基本概念与网际协议IP知识精华

news/2024/5/18 13:38:51 标签: udp, tcp/ip, 网络协议

一、计算机网络基本概念

1、因特网的基本组成

因特网可以分为两大块:
(1)边缘部分
由所有连接在因特网上的主机组成,这是用户直接使用的。
(2)核心部分
由大量的路由器连接路由器的网络组成。这部分为边缘部分提供服务(连通和交换)。

2、不同层数据名称 以及相关设备

应用层:应用层交互的数据单元成为报文。另外,在分组交换过程中,也把要发送的整块数据称为报文
传输层: TCP数据传输单位为报文段,UDP为用户数据报
网络层分组/包/IP数据报/数据报。网络层把传输层产生的报文段或用户数据报封装成分组或者包。在TCP/IP体系中,由于网络层使用IP协议,因此分组又称为IP数据报,简称数据报。
数据链路层:将IP数据报封装成
物理层:传输的数据单位是比特
此外,无论那一层产生的数据,都可以统称分组

  • 物理层使用的中间设备叫转发器
  • 数据链路层使用的中间设备叫网桥桥接器
  • 网络层使用的中间设备叫路由器
  • 在网路层以上使用的中间设备叫网关
    由于历史原因,也把网络层使用的路由器叫网关。

3、储存转发与分组交换

具体内容参考如下:
图解储存转发与分组交换

储存转发:路由器会暂时储存一个个短的分组,然后查找路由表,将分组转发出去。
断续占用资源:分组交换在传送数据之前不必占用一条端到端的通信资源,分组在哪一段链路传输时,才占用这段链路的通信资源。
分组转发:不需要建立连接,省去了连接建立和释放的开销。
缺点:
(1)暂存分组,会有一定的时延
(2)分组后会加上头部信息,会有一定的开销。

二、数据链路层

(有空补充)

三、网络层

参考文章:
详解IP协议

1、协议

网际协议IP是TCP/IP体系中两个最主要的协议之一,与IP协议配套的还有三个协议:

  • 地址解析协议ARP
  • 网际控制报文协议ICMP
  • 网际组管理协议IGMP
  • 因此,TCP/IP体系中,网络层有常称为网际层或IP层。

2、IP地址

(1)IP地址的分类
IP地址由网络号+主机号构成
电脑如何区别这几类地址
通过前面的01字段来却别,如0开头表示A类地址,10开头表示B类地址。
记忆:ABC三类地址开头分别为0、10、110,主机号分别为24位、16为、8位。
A类地址中包含的特殊的地址

  • 网络号全0的地址为保留地址,代表本网络
  • 网络号全1用作本地环回测试。
    因此,A类网络地址总数要减去2.
    另外,B类和C类 IP地址,最小的地址(网络号与主机号全0)也是不用的。

在这里插入图片描述

回送地址:127.0.0.1。 也是本机地址,等效于localhost或本机IP。一般用于测试使用。例如:ping 127.0.0.1来测试本机TCP/IP是否正常。
在这里插入图片描述
(2)子网的划分与掩码、广播地址
在这里插入图片描述
之前我们讲到了,每个子网的第一个和最后一个地址无效。这个无效更多的是指“这两个地址不是指向的某个真实的主机”。

上面的子网掩码计算完后,得到的是“子网掩码.0”,此处的“.0”(子网的第一个地址),意味着该ip地址不指向某一个主机,而是表示“子网标识符”。

而“.255”(子网的最后一个地址),则也“不是指向”255主机,而是表示了“该子网下的所有主机”。从而引出了广播地址

IP网络上发送信息都是要有准确的ip地址的,假设要给“统一网络下的”10台主机发信息,那么就得写10个精准的ip地址。
而利用广播地址,我们就能通过一条ip地址,将信息发送给某个子网下的所有主机。
即:只写出网络号和子网号,而将主机ID部分用.255代替。

3、IP数据报格式

格式如下:
在这里插入图片描述
版本:IPv4为4, IPV6为6
首部长度:正常为5(固定20字节),最大为15
协议:该数字对应一个“有效载荷部分的数据类型”。比如17代表UDP,6代表TCP。
片偏移:较长数据分片后,某片在原分组中的相对位置。(单位8字节)
例如原数据3800字节,分成1400 、1400、1000三片。对应的片偏移分别为
0/8 = 0, 1400/8 = 175, 2800/8 = 350 。

4、ARP协议

物理链路层是根据硬件地址,即MAC地址来将消息发送给对方的。而网络层交付给物理链路层的数据只包含IP地址,这就要物理链路层必须能够根据IP地址来寻找MAC地址,这需要ARP协议
当主机A需要想本局域网的主机B发送IP数据报时:

  • 首先查看ARP高速缓存中是否有主机B的MAC地址
  • 若无,发送ARP请求分组,得到B的MAC地址

通过ARP请求获得MAC地址的过程:
(1)主机A在本局域网广播发送ARP请求,内如如下:
我的IP地址是ip1,MAC地址是mac1,想知道IP地址为ip2的MAC地址
(2)本局域网上所有的主机都会收到这的条广播消息,若发现广播中的ip2与主机IP地址相同,则回复,否则忽略。
(3)IP地址为ip2的主机B将会回复,内容是:我的IP地址为ip2,MAC地址为mac2
(4)主机A收到回复之后,将mac地址写入ARP高速缓存中。
因为后续主机B也可能想主机A发送数据,因此主句B也会将主机A的IP地址写入自己的ARP高速缓存中。
注意,ARP请求只能获得同一局域网上的其它主机的mac地址。

如果主机A与主机B不在同一个局域网上,而是通过路由器R相连。
在发送ARP请求时,主机A发现主机B与主机不在同一个局域网上,arp请求而的是网关(路由器)R对应的mac地址。

5、IP层分组转发的流程

所有的网络通过路由器连接成一个整体,因此IP层转发的关键是得知道下一跳的路由表,如果根据目的的主机号来制作路由表,则会太多。只能根据网络号来进行转发。
在这里插入图片描述
H1的路由表如下所示:
在这里插入图片描述
网络N3、N4、N5都是通过与R2与主机H1相连,如果R2背后的网络更多,路由表的行数会更多,但是这些网络都是通过R2相连,因此可以将R2设置为默认路由,这样可以大大简化路由表。
在这里插入图片描述
需要说明的是,划分子网之后,路由表中还需要加上子网掩码。

6、ICMP协议

深入理解ICMP协议
(1)协议主要功能
允许主机和路由器报告差错情况或提供有关异常情况的报告,从而更有效的转发 IP数据报和提高交付的成功率。
ICMP协议属于网络层协议,虽然ICMP报文是装在IP数据包中,作为数据部分(像是传输层下来的报文),但是ICMP协议不是高层协议。

(2)报文基本格式
ICMP报文是作为IP数据包数据部分发送
在这里插入图片描述
(3)类型
差错报告报文

  • 终点不可达
  • 源点抑制(主机由于拥塞丢弃数据)
  • 时间超过
  • 参数问题
  • 改变路由(告诉主机又比默认路由更好的路由)
    询问报文
  • 回送请求或回答
  • 时间戳请求或回答

(4)差错报告报文数据部分格式
在这里插入图片描述
提取收到的IP数据报的数据字段的前8个字节是为了得到运输层的端口号(对于TCP和UDP)以及运输层报文的发送序号(对于TCP)。

(5)ICMP应用–PING原理
发送回送请求报文,由于ICMP往返报文都有时间戳,就能够得出往返时间。统计结果:得到和丢失的分组数、往返时间等数据。
(6)ICMP应用–traceroute原理
taceroute 从源主机向目的主机发送一连串的IP数据报,数据报中封装是无法交付的UDP报文,第一个数据报的生存时间TTL设置为1,到达第一个路由器后就会向源主机报告时间超过报文,第n个报文的TTL设置为n,便会达到第n个路由器,最终直至到达目的主机。这样就知道了从源主机到目的主机之间经过的所有路由信息。

1、TCP/UDP
主要是TCP/UDP基本数据格式,TCP连接、滑动窗口与流量控制
图解TCP/UDP数据格式、TCP连接与释放、滑动窗口与流量控制


http://www.niftyadmin.cn/n/1074465.html

相关文章

如何根据状态转移方程确定循环的方向

color#0099ff size7 face“黑体” 在解决规划的问题时&#xff0c;如果已经确定状态转移方程&#xff0c;如果确定循环的方向&#xff1a; 比如对于上面的状态转移方程&#xff0c;循环的方向应该时 i n - 1; i > 1; i– j i 1; j < n; j k i; k < j; k 按照上面…

操作系统的位数与CPU位数、线路位宽的区别以及程序执行的过程

1、操作系统位数与CPU位宽、线路位宽 先说结论&#xff1a;通常说的操作系统的位数&#xff0c;指的是线路位宽&#xff0c;也就是指地址总线的位数。 1.1 CPU位宽。 CPU位宽是指一次可以计算数据的bit数。有CPU在计算时&#xff0c;数据需要先保存在寄存器中&#xff0c;因…

pb中的Evaluate函数、Describe函数、LookUpDisplay函数

pb中的Evaluate函数 在使用Describe描述数据窗口对象中的相关信息时,有一个非常重要的函数不能不掌握,就是Evaluate。 虽然函数Describe可以获取对象的信息,但是表达式的取值就不能正常读取了,而这又是经常遇到的。所以,函数Evaluate非常重要,它可以使函数Describe获取…

RAID及其配置操作

RAID及其配置操作一、RAID磁盘阵列1. RAID0&#xff08;条带化存储&#xff09;2. RAID1&#xff08;镜像存储&#xff09;3. RAID54. RAID65. RAID10&#xff08;先做镜像&#xff0c;再做条带&#xff09;6. RAID01&#xff08;先做条带&#xff0c;再做镜像&#xff09;二、…

C++编程规范1:标识符命名规范

好的命名可以让代码看起来更加简洁易懂&#xff0c;下面摘抄了一些常用的命名规范&#xff1a; 1、不得使用还有单下划线开头和双下划线的的标识符名称&#xff0c;这是留给编译器和库专用的&#xff1b; 2、标识符的大小写规则&#xff1a; &#xff08;1&#xff09;宏名&…

Linux引导过程与服务控制

Linux引导过程与服务控制一、Linux操作系统引导过程1. 引导过程2. 系统初始化进程2.1 init进程2.2 Systemd2.2.1 Systemd单元类型2.2.2 运行级别所对应的Systemd目标二、排除启动类故障1. MBR扇区故障1.1 故障原因1.2 故障现象1.3 解决思路2. 修复MBR扇区故障2.1 备份MBR扇区数…

C++编程规范2:成员的布局

在类中&#xff0c;往往具有成员变量&#xff0c;有具有成员函数&#xff0c;可能还有一些嵌套定义的类型&#xff0c;同时这些成员属性由可以分为public、protected、private等。一般来说&#xff0c;属性应该按照如下顺序&#xff1a; publicprotectedprivate 具体的成员需要…

VS Code搭配code runnner编译时提示:g++: fatal error: no input files解决方法

如下图所示&#xff0c;如果我们使用的是windows系统&#xff0c;当我们编写好C文件之后&#xff0c;执行run code命令&#xff0c;就会出现的下面的错误提示&#xff1a; g: error: testCodeRunnner.cpp: No such file or directory g: fatal error: no input files compilati…