一、计算机网络基本概念
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连接与释放、滑动窗口与流量控制