===
当您阅读本文时,计算机世界中只有0 和1。然而,这些数字不能在实际的物理介质上传输。由于这些需要转换为光或电信号,因此该层负责将这些比特流(0101)转换为光和电信号。
如果不存在物理层,则没有互联网,也不会发生数据共享,因为数据无法在网络内流动。
数据链路层
=====
该层中的数据不是作为比特流发送,而是分段并以帧的形式发送。
MAC地址
也称为计算机的硬件地址,是固定在适配器(网卡)ROM中的48位地址。 MAC地址在全球范围内是唯一的,用于唯一标识计算机。
ps : 如果一台计算机有多个网卡,则一个MAC 地址不能唯一对应于一台计算机。例如,一台计算机配备有两张网卡,一张用于计算机与外界通信,另一张用于与计算机通信。网卡用于内部LAN 通信。此时有两个MAC地址,但它们实际上是同一台计算机。
分组交换
这次,因为数据必须一次分割成一个帧,所以每个链路都有不同的最大帧长度或MTU(最大传输单元),因此超过此MTU 的任何内容都会被丢弃。
例如,一辆卡车一次可以运载5吨货物,但有些道路的载重限制为2吨,因此货物必须分三部分运输。
网桥
网桥在数据链路层运行,根据MAC 帧的目标地址转发和过滤传入帧。
以太网交换机
事实上,它是一个多接口桥,以太网交换机的每个接口都直接连接到单个主机或另一个集线器,从而可以轻松实现VLAN(虚拟局域网)。
以太网的MAC帧
MAC帧的格式为:
MAC帧格式
目的地址: 接收者的48 位MAC 地址
源地址: 发送方的48 位MAC 地址
类型字段:标记上层使用的协议。0x0800 是IP 数据报。
网络层
===
如果只有数据链路层而没有网络层,则只能在同一链路上发送数据,而网络层允许在域内的不同数据链路之间发送数据。
IP地址
IP 地址也称为软件地址,在计算机内存中存储为32 位IPv4 地址和128 位IPv6 地址。
IP地址和MAC地址
IP地址在网络层之上使用,MAC地址在数据链路层之下使用。
IP地址是逻辑地址,MAC地址是物理地址
IP数据包报头中的源地址和目的地址在传输过程中不会发生变化,但MAC帧报头中的源地址和目的地址在每次到达路由器时都会发生变化。
IP地址分类
IP地址={网络号,主机号}
A 类地址: 0.0.0.0 至127.0.0.0 B 类地址: 128.0.0.0 至191.255.0.0 C 类地址: 192.0.0.0 至223.255.255.0
划分子网之后的IP地址
IP地址={网络号、子网号、主机号}
例如,设备的B 类IP 地址为145.13.0.0。所有目标地址为145.13.x.x 的数据报在内部子网分裂后都变为: 145.13.3.0, 145.13。7.0 、 145.13.21.0 但在外界看来是网络,即145.13.0.0 。这样,路由器R收到报文后,根据目的地址将其发送到相应的子网。
子网掩码
通常,无论您的网络是否划分子网,您都可以通过将子网掩码与IP地址进行按位与运算来获取网络地址。
如果您的路由表中有默认路由,请将其提供给您的路由器。如果没有,- (6)
报告数据包转发错误
构成超网的IP地址
Internet上的所有路由器都不转发目的地址为私有地址的数据报。私有地址(虚拟IP地址)分为三种类型:
10.0.0.0 至10.255.255.255
172.16.0.0 至172.31.255.255
192.168.0.0 至192.168.255.255
A公司目前在广州设有分部,在上海设有分部,并在当地拥有自己的专网。那么如何连接这两个专用网络呢?
电信线路是专门为该组织租用的,但价格太贵。
使用公共互联网作为通信载体的虚拟专用网络(VPN)。
IP数据报
多个专用网络中的主机共享NAT 路由器的IP 地址。当主机发送或接收IP数据报时,必须首先通过NAT路由器进行网络地址转换。
NAT 路由器的工作原理
不仅如此,NAT还可以使用端口号转换网络地址和端口转换NAPT。
IP层转发分组的流程
ARP解决了同一局域网内主机或路由器的IP地址和MAC地址之间的映射问题:IP地址-ARP-MAC地址。
每台主机都有一个ARP缓存,其中包含局域网中每台主机和路由器的IP地址到MAC地址的映射表。 ARP :的工作原理如下:
ARP 的工作原理.jpg
如果网络之间使用ARP怎么办?
在此网络上广播
如果找不到主机,则转到路由器
路由器帮助转发(在另一个网络上广播)
如果找到,则完成ARP 请求,否则返回(2)。
传输层
===
数据链路层和网络层被赋予最高优先级,因为这些层的数据传输不可靠并且交付效果最好。也就是说,数据链路层和网络层不负责是否发送数据。然而,TCP 协议的这一层提供了可靠的数据传输。
该层主要关注两个协议: UDP 和TCP。
路由器的分组转发算法
UDP :的主要特点
无连接
尽力交付
对于数据包:UDP头被直接添加到应用层传递的数据包中,并扔到IP层,没有任何合并或拆分。
无拥塞控制
支持一对一、一对多、多对一、多对多交互通信。
标头开销很小,只有8个字节
UDP报头
UDP 报头格式
源端口: 源端口号选择是否需要对方响应。所有其他情况均为0。
目标端口: 目标端口号。当端点传递消息时应该使用它。
长度: UDP 数据报长度,最小8(仅报头)
校验和: 与仅检查报头的IP 数据报不同,UDP 必须同时检查报头和数据部分。
虚拟专用网VPN
TCP :的主要特点
面向连接的传输层协议
每个TCP 连接只能有两个端点。 TCP是点对点的。
提供可靠的运输
全双工通信
面向字节流
TCP工作流程
TCP字节流
TCP连接
TCP连接的端点称为套接字
socket=(IP地址:端口号)
每个TCP 连接由通信两端的两个端点(套接字)唯一标识。即: TCP连接:={套接字1,套接字2}={(IP1 :端口1),(IP2 :端口2)}。
TCP 段头
TCP 段头
源端口和目标端口: 具有与UDP 端口相同的功能。
Serial Number : 该段中数据的第一个字节的序列号
确认号: 预期从对等方的下一个消息段接收到的第一个数据字节的序列号。如果确认号=N,则表示成功接收到:序号N-1之前的所有数据。
数据偏移量: TCP 段头长度
预留:以供将来使用,目前为0
紧急URG : 如果URG=1,则表示启用紧急指针字段,告诉系统这是紧急数据,应尽快发送。例如,传输突然中断。
ACK 确认: 如果ACK=1,则确认号有效;如果ACK=0,则确认号无效。 TCP规定连接建立后,发送的所有报文段的ACK必须置1。
Push PSH : 当PSH=1 时,接收方收到报文段后,直接向上传递该报文段,无需等到整个缓存满。
Reset RST : 如果RST=1,则表示TCP 连接遇到严重错误,必须释放并重新连接。
同步SYN : 用于在建立连接时同步序列号。如果SYN=1,ACK=0,当对方同意建立连接时设置SYN=。 1 响应段中ACK=1。
终止FIN : FIN=1 表示该报文段的发送方数据已发送,应释放连接。
窗口:告诉对方:接收方当前允许对方发送多少数据,从该消息段的报头中的确认号开始。这是接收方让发送方设置发送窗口的依据。
校验和: 与UDP 相同,检查标头部分和数据部分
紧急指针:在URG=1时有效,指示消息段内紧急数据的结尾位置。
选项: 的最大长度为40 个字节。否则为0。 最大分段长度MSS(最大分段大小) : 每个TCP 分段的数据字段的最大长度。如果未输入,则默认为536 字节。
窗户
TCP中一个非常重要的概念是窗口(发送窗口和接收窗口)。
窗户
停止等待协议的效率非常低,因此由发送方维护的发送窗口的概念诞生了。发送窗口内的5个报文可以连续发送,无需等待对方确认。每接收到一个数据包,传输窗口就前移一个数据包,显着提高信道利用率。
接收方不必为每个数据包发送确认消息,而是使用累积确认方法。也就是说,确认消息被发送到按顺序到达的最后一个数据包。
网络地址转换NAT
如果发送方在等待一定时间后没有收到ACK确认消息,则这段等待时间就成为重传超时(RTO)。
然而,RTO的值并不固定,这个时间总是略大于连接的往返时间(RTT)。假设发送一条消息需要5秒,发送一条消息也需要5秒。如果对方收到确认消息后回复,则RTT为10秒,因此RTO略大于10秒。如果超过RTO且没有收到确认消息,则认为该消息丢失,必须发送该消息。怨恨。
ARP协议
流量控制使用滑动窗口和发送消息段的定时。
用户数据报协议UDP
发送方维护一个拥塞窗口cwnd(发送窗口=拥塞窗口)。
慢启动: cwnd=1,每轮发送后加倍。 拥塞避免: 缓慢增加慢启动阈值ssthresh :
对于cwnd ssthresh,使用慢启动算法
对于cwnd ssthresh,使用拥塞避免算法
如果cwnd=ssthresh 则可选
拥塞控制
只要确定网络拥塞,就重新运行慢启动算法,将ssthresh 设置为当前发送拥塞窗口的一半(不能小于2),并将cwnd 设置为1 。
除了慢启动和拥塞避免算法外,还有一套快速重传和快速恢复算法:
快速重传: 只要接收方及时发送确认,并且发送方收到连续3次重复确认,就会立即重发。
快速恢复: 如果发送方连续收到三个重复确认,则ssthresh 减半,并且cwnd 设置为ssthresh。
传输控制协议TCP
TCP建立连接的3次握手和断开连接的4次挥手是面试中被问到的常识。
TCP三路握手
问: 为什么我们需要握手三次而不是两次?
: A 第一次发送连接请求,但卡在网络中的某个节点上并重新发送。之后,A和B成功发送数据。当连接释放时,B突然收到断开连接的请求。如果是双向握手,B发送确认,但A实际上并不关注这个确认。因为我没有。然而,B却傻乎乎地认为数据会到达,并耐心等待,结果却浪费了资源。
更现实的解释是: A呼叫B。
第一次握手: 你好,我是A,你能听到我说话吗?
第二次握手: 我听到你的声音,是B,你能听到我说话吗?
第三次握手:听到,可以开始聊天了
三次握手实际上是一种检查双方发送和接收能力是否正常的方法。
超时重传
4 TCP 波
Q : 为什么你挥手4次而不是2次或3次?
A:
首先,TCP的全双工通信允许双方充当数据发送方。如果A想要关闭连接,必须等到所有数据都发送完毕后,才能向B发送FIN(A处于半关闭状态)。此时的状态)
然后B发送确认ACK,如果此时它想发送任何数据,它就会这样做(例如,执行预发布处理)。
而且,B发送完数据后,向A发送FIN(此时B处于半关闭状态)。
然后A发送ACK并进入TIME-WAIT状态
最后,如果2MSL后没有收到B的消息,则判定B已收到ACK(此时认为A和B完全关闭)。
PS : 如果你仔细分析上面的步骤,你就会明白为什么只能摇动不到4次了。
问: 为什么我必须等待2MSL(最大段生命周期)小时才能从TIME_WAIT 更改为CLOSED?
A : 客户端发送了最终的ACK 响应,但ACK 可能会丢失。如果服务器没有收到ACK,则继续重复发送FIN片段。因此,客户端不能立即关闭,必须保证服务器收到ACK。客户端发送ACK后,进入TIME_WAIT状态。客户端设置一个定时器并等待2MSL。如果在此时间内再次收到FIN,则客户端重新发送ACK,并再次等待2MSL。 MSL是指网络中一个段的最大生存期,2MSL是传输和响应所需的最大时间。如果客户端在2MSL内没有再次收到FIN,则客户端认为已成功收到ACK并终止TCP连接。
更现实的解释:
First Wave : A 告诉B 它没有数据要发送,准备关闭连接。您想发送数据吗?
第二波: B 发送最后一个数据
第三波: B告诉A我也想关闭连接。
第四波: A告诉B你可以关了,我也关了。
应用层
===
最著名的应用层协议是HTTP、FTP,还有重要的DNS。
域名系统(DNS,Domain Name System)
=============================
DNS可以将域名(例如www.jianshu.com)解析为IP地址。
域名服务器分类
根域名服务器: 顶级域名服务器
顶级域名服务器:正如其名。
授权域名服务器:负责该区域的响应服务器
本地域名服务器:主机向服务器发送DNS查询请求
流量控制
DNS查询
针对本地域名服务器的主机查询通常使用递归查询。
从本地域名服务器到根域名服务器的查询通常使用重复查询。
欢迎任何人加入我们的圈子(技术交流、学习资源、职场投诉、大公司内部推荐、面试指导),让我们一起学习、成长!
如果您需要此信息,请从第 栏中获取。
以上#必知的计算机网络知识相关内容来自互联网,仅供大家参考。相关信息请参见官方公告。
原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/92272.html