计算机网络知识点

概览

1. 各层协议的作用、以及 TCP/IP 协议的特点
2. 以太网的特点,以及帧结构
3. 集线器、交换机、路由器的作用,以及所属的网络层
4. IP 数据报常见字段的作用
5. ARP 协议的作用,以及维护 ARP 缓存的过程
6.ICMP 报文种类以及作用;和 IP 数据报的关系;
7.Ping 和 Traceroute 的具体原理
8. UDP 与 TCP 的比较,分析上层协议应该使用 UDP 还是 TCP
9. 理解三次握手以及四次挥手具体过程,三次挥手的原因、四次挥手的原因、TIME_WAIT 的作用
10. 可靠传输原理,并设计可靠 UDP 协议
11. TCP 拥塞控制的作用,理解具体原理
12. DNS 的端口号; TCP 还是 UDP;作为缓存、负载均衡

各层协议的作用、以及TCP/IP协议的特点

[外链图片转存失败(img-DrkKNzI8-1564908625139)(https://camo.githubusercontent.com/307487dbeaf00492335d1f034529100e4f368a43/68747470733a2f2f67697465652e636f6d2f437943323031382f43532d4e6f7465732f7261772f6d61737465722f646f63732f706963732f66356434306230312d616266322d343335652d396365372d3738383963343162326661362e6a7067)]

1. 五层协议
  • 应用层:为特定应用程序提供数据传输服务,例如 HTTP、DNS 等协议。数据单位为 报文
  • 传输层:运输层包括两种协议:传输控制协议 TCP,提供面向连接、可靠的数据传输服务,数据单位为 报文段;用户数据报协议 UDP,提供无连接、尽最大努力的数据传输服务,数据单位为 用户数据报。TCP 主要提供完整性服务,UDP 主要提供及时性服务。(TCP 面向字节流,UDP 面向报文)
  • 网络层:为 主机 提供数据传输服务。而传输层协议是为主机中的进程提供数据传输服务。网络层把传输层传递下来的报文段或者用户数据报封装成 分组。(网络层负责 主机与主机 之间的通信)
  • 数据链路层:网络层针对的还是主机之间的数据传输服务,而主机之间可以有很多链路,链路层协议就是为 同一链路 的主机提供数据传输服务。数据链路层把网络层传下来的分组封装成
  • 物理层:物理层的作用是尽可能屏蔽传输媒体和通信手段的差异,使数据链路层感觉不到这些差异。
2. 七层协议

七层协议比五层协议多了 表示层会话层

  • 表示层: 数据压缩、加密以及数据描述,这使得应用程序不必关心在各台主机中数据内部格式不同的问题(对数据格式的统一化处理)
  • 会话层:建立及管理会话
3. TCP/IP 模型

它只有四层,相当于五层协议中 数据链路层物理层 合并为 网络接口层
TCP/IP 体系结构不严格遵循 OSI 分层概念,应用层可能会直接使用 IP 层或者网络接口层。
[外链图片转存失败(img-3vZBuhRp-1564908625139)(https://camo.githubusercontent.com/8d678bb50fdbb2aa3e8e242418e16e0d6ed6123e/68747470733a2f2f67697465652e636f6d2f437943323031382f43532d4e6f7465732f7261772f6d61737465722f646f63732f706963732f365f323030313535303831313137353234362e706e67)]

以太网的特点,以及帧结构

以太网是一种 星形拓扑 结构的局域网

早期使用 集线器 进行连接,集线器是一种物理层设备, 作用于 比特 而不是帧,当一个比特到达接口时,集线器重新生成这个比特,并将其能量强度放大,从而扩大网络的传输距离,之后再将这个比特发送到其它所有接口。如果集线器同时收到两个不同接口的帧,那么就发生了碰撞。(集线器属于 物理层设备,作用于比特)

目前以太网使用交换机替代了集线器,交换机是一种链路层设备,它不会发生碰撞,能根据 MAC 地址进行存储转发(交换机具有自学习的功能,学习的内容为 mac 地址与交换机端口的映射表)

帧结构:

  • 类型:标记上层使用的协议
  • 数据:长度在 46 - 1500 之间,如果太小,则需要填充
  • FCS:帧检测序列,使用的是 CRC 检验方法
  • 目的地址 与 源地址 都是 MAC 地址

集线器、交换机、路由器的作用,以及所属的网络层

集线器交换机路由器
物理层设别,作用于比特数据链路层设备,作用于帧网络层设备,作用于分组
集线器的主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上交换机在同一时刻可进行多个端口对之间的数据传输。 交换机可以“学习”MAC地址,并把其存放在内部地址表中,通过在数据帧的始发者和目标接收者之间建立临时的交换路径,使数据帧直接由源地址到达目的地址当数据从一个子网传输到另一个子网时,可通过路由器来完成。 因此,路由器具有判断网络地址和选择路径的功能

IP数据报常见字段的作用

[外链图片转存失败(img-gU3eEyXF-1564908625140)(https://camo.githubusercontent.com/c8172c6f2da63eec7f3756e3d609b847c133825f/68747470733a2f2f67697465652e636f6d2f437943323031382f43532d4e6f7465732f7261772f6d61737465722f646f63732f706963732f38356330356662312d353534362d346335302d393232312d3231663233316364633863352e6a7067)]

  • 版本 : 有 4(IPv4)和 6(IPv6)两个值;
  • 首部长度 : 占 4 位,因此最大值为 15。值为 1 表示的是 1 个 32 位字的长度,也就是 4 字节。因为首部固定长度为 20 字节,因此该值最小为 5。如果可选字段的长度不是 4 字节的整数倍,就用尾部的填充部分来填充
  • 区分服务 : 用来获得更好的服务,一般情况下不使用
  • 总长度 : 包括 首部长度数据部分长度
  • 标识 : 在数据报长度过长从而发生分片的情况下,相同数据报的 不同分片 具有 相同 的标识符。
  • 片偏移 : 和标识符一起,用于发生分片的情况。片偏移的单位为 8 字节
  • 生存时间 :TTL,它的存在是为了防止无法交付的数据报在互联网中不断兜圈子。以路由器跳数为单位,当 TTL 为 0 时就丢弃数据报。
  • 协议 :指出携带的数据应该上交给哪个协议进行处理,例如 ICMP、TCP、UDP 等
  • 首部检验和 :因为数据报每经过一个 路由器 ,都要重新计算检验和,因此检验和不包含数据部分可以减少计算的工作量。

ARP协议的作用,以及维护ARP缓存的过程

ARP 实现由 IP 地址得到 MAC 地址。
每个主机都有一个 ARP 高速缓存,里面有本局域网上的各主机和路由器的 IP 地址到 MAC 地址的映射表。

如果主机 A 知道主机 B 的 IP 地址,但是 ARP 高速缓存中没有该 IP 地址到 MAC 地址的映射,此时主机 A 通过广播的方式发送 ARP 请求分组,主机 B 收到该请求后会发送 ARP 响应分组给主机 A 告知其 MAC 地址,随后主机 A 向其高速缓存中写入主机 B 的 IP 地址到 MAC 地址的映射。

ICMP报文种类以及作用;和IP数据报的关系;

ICMP 是为了更有效地转发 IP 数据报和提高交付成功的机会。它 封装在 IP 数据报中 ,但是不属于高层协议。
[外链图片转存失败(img-q7XOgOkw-1564908625140)(https://camo.githubusercontent.com/76e8c3fda84795c55c0331147d16133f42c4af6a/68747470733a2f2f67697465652e636f6d2f437943323031382f43532d4e6f7465732f7261772f6d61737465722f646f63732f706963732f65333132343736332d663735652d343663332d626138322d3334316536633938643836322e6a7067)]
ICMP 报文分为 差错报告报文询问报文
[外链图片转存失败(img-PkkGIrXr-1564908625140)(https://camo.githubusercontent.com/52e50a6f5d392f36be798b7f7949f5a109cf29b7/68747470733a2f2f67697465652e636f6d2f437943323031382f43532d4e6f7465732f7261772f6d61737465722f646f63732f706963732f61613239636338382d373235362d343339392d386337662d3363663461363438393535392e706e67)]

Ping和Traceroute的具体原理

  1. Ping

    • Ping 是 ICMP 的一个重要应用,主要用来测试两台主机之间的连通性。
    • Ping 的原理是通过向目的主机发送 ICMP Echo 请求报文,目的主机收到之后会发送 Echo 回答报文。Ping 会根据时间和成功响应的次数估算出数据包往返时间以及丢包率。
  2. Traceroute

    • Traceroute 是 ICMP 的另一个应用,用来跟踪一个分组从源点到终点的路径。
    • Traceroute 发送的 IP 数据报封装的是 无法交付 的 UDP 用户数据报,并由目的主机发送 终点不可达 差错报告报文。
      • 源主机向目的主机发送一连串的 IP 数据报。第一个数据报 P1 的生存时间 TTL 设置为 1,当 P1 到达路径上的第一个路由器 R1 时,R1 收下它并把 TTL 减 1,此时 TTL 等于 0,R1 就把 P1 丢弃,并向源主机发送一个 ICMP 时间超过差错报告报文
      • 源主机接着发送第二个数据报 P2,并把 TTL 设置为 2。P2 先到达 R1,R1 收下后把 TTL 减 1 再转发给 R2,R2 收下后也把 TTL 减 1,由于此时 TTL 等于 0,R2 就丢弃 P2,并向源主机发送一个 ICMP 时间超过差错报文
      • 不断执行这样的步骤,直到最后一个数据报刚刚到达目的主机,主机不转发数据报,也不把 TTL 值减 1。但是因为数据报封装的是无法交付的 UDP,因此目的主机要向源主机发送 ICMP 终点不可达差错报告报文

UDP与TCP的比较,分析上层协议应该使用UDP还是TCP

UDP 与 TCP 的特点:

  • UDP:用户数据报协议 UDP(User Datagram Protocol)是无连接的,尽最大可能交付,没有拥塞控制,面向报文(对于应用程序传下来的报文不合并也不拆分,只是添加 UDP 首部),支持 一对一一对多多对一多对多 的交互通信
  • TCP:传输控制协议 TCP(Transmission Control Protocol)是面向连接的,提供可靠交付,有 流量控制拥塞控制,提供 全双工通信面向字节流(把应用层传下来的报文看成字节流,把字节流组织成大小不等的数据块),每一条 TCP 连接只能是点对点的( 一对一

理解三次握手以及四次挥手具体过程,三次挥手的原因、四次挥手的原因、TIME_WAIT的作用

1. TCP 的三次握手

[外链图片转存失败(img-xXVYxLLm-1564908625141)(https://camo.githubusercontent.com/509d67c6d5b4f159cca47e79850c6e0aafb587bb/68747470733a2f2f67697465652e636f6d2f437943323031382f43532d4e6f7465732f7261772f6d61737465722f646f63732f706963732f65393264306562632d376434362d343133622d616563312d3334613339363032663738372e706e67)]
假设 A 为客户端,B 为服务器端

  • 首先 B 处于 LISTEN(监听) 状态,等待客户的连接请求。
  • A 向 B 发送连接请求报文,SYN=1,ACK=0,选择一个初始的序号 x。此时 A 进入 SYN-SENT 状态。
  • B 收到连接请求报文,如果同意建立连接,则向 A 发送连接确认报文,SYN=1,ACK=1,确认号为 x+1,同时也选择一个初始的序号 y。此时 B 进入 SYN-RECV 状态。
  • A 收到 B 的连接确认报文后,还要向 B 发出确认,确认号为 y+1,序号为 x+1。此时 A 进入建立起连接状态:ESTAB-LISHED.
  • B 收到 A 的确认后,连接建立, 进入建立起连接状态 ESTAB-LISHED

2. TCP 第三次握手的原因
  • 第三次握手是为了防止失效的连接请求到达服务器,让服务器错误打开连接。
  • 客户端发送的连接请求如果在网络中滞留,那么就会隔很长一段时间才能收到服务器端发回的连接确认。客户端等待一个超时重传时间之后,就会重新请求连接。但是这个滞留的连接请求最后还是会到达服务器,如果不进行三次握手,那么服务器就会打开两个连接。如果有第三次握手,客户端会忽略服务器之后发送的对滞留连接请求的连接确认,不进行第三次握手,因此就不会再次打开连接。

3. TCP 的四次挥手

在这里插入图片描述
释放连接过程:

  • A 发送连接释放报文,FIN=1。此时 A 进入 FIN-WAIT-1 阶段
  • B 收到之后发出确认,此时 TCP 属于 半关闭 状态,B 能向 A 发送数据但是 A 不能向 B 发送数据。此时 B 进入 CLOSE-WAIT 阶段。A 进入 FIN-WAIT-2 阶段
  • 当 B 不再需要连接时,发送连接释放报文,FIN=1。 B 进入 LSAT-ACK 阶段。
  • A 收到后发出确认,进入 TIME-WAIT 状态,等待 2 MSL(最大报文存活时间)后释放连接。
  • B 收到 A 的确认后释放连接。

5. 四次挥手的原因(或者说后面两次挥手的原因)
  • 客户端发送了 FIN 连接释放报文之后,服务器收到了这个报文,就进入了 CLOSE-WAIT 状态。这个状态是为了让服务器端 发送还未传送完毕的数据 ,传送完毕之后,服务器会发送 FIN 连接释放报文。

6. 客户端接收到服务器端的 FIN 报文后进入此状态,此时并不是直接进入 CLOSED 状态,还需要等待一个时间计时器设置的时间 2MSL。这么做有两个理由:
  • 确保最后一个确认报文能够到达。如果 B 没收到 A 发送来的确认报文,那么就会重新发送连接释放请求报文,A 等待一段时间就是为了处理这种情况的发生。
  • 让本连接持续时间内所产生的所有报文都从网络中消失,使得下一个新的连接不会出现旧的连接请求报文。

可靠传输原理,并设计可靠UDP协议

1. TCP 可靠传输原理
  • TCP 使用 超时重传 来实现可靠传输:如果一个已经发送的报文段在超时时间内没有收到确认,那么就重传这个报文段。
2. 可靠 UDP 协议

TCP拥塞控制的作用,理解具体原理

1. TCP 拥塞控制的作用
  • 如果网络出现拥塞,分组将会丢失,此时发送方会继续重传,从而导致网络拥塞程度更高。因此当出现拥塞时,应当控制发送方的速率。这一点和流量控制很像,但是出发点不同。流量控制是为了让接收方能来得及接收,而拥塞控制是为了 降低整个网络的拥塞程度

[外链图片转存失败(img-jmAZvtEi-1564908625141)(https://camo.githubusercontent.com/e39821d9ef5a84cde382c28945e9ab9b524ddd42/68747470733a2f2f67697465652e636f6d2f437943323031382f43532d4e6f7465732f7261772f6d61737465722f646f63732f706963732f35316532656439352d363562382d346165392d386166332d3635363032643435326132352e6a7067)]

2. 具体原理

TCP 主要通过四个算法来进行拥塞控制:慢开始拥塞避免快重传快恢复
发送方需要维护一个叫做 拥塞窗口(cwnd) 的状态变量,注意拥塞窗口与发送方窗口的区别:拥塞窗口只是一个状态变量,实际决定发送方能发送多少数据的是发送方窗口。

3. 慢开始与拥塞避免

发送的最初执行慢开始,令 cwnd = 1,发送方只能发送 1 个报文段;当收到确认后,将 cwnd 加倍,因此之后发送方能够发送的报文段数量为:2、4、8 …
注意到慢开始每个轮次都将 cwnd 加倍,这样会让 cwnd 增长速度非常快,从而使得发送方发送的速度增长速度过快,网络拥塞的可能性也就更高。设置一个慢开始门限 ssthresh,当 cwnd >= ssthresh 时,进入 拥塞避免 ,每个轮次只将 cwnd 加 1。
如果出现了超时,则令 ssthresh = cwnd / 2,然后重新执行慢开始

4. 快重传与快恢复

在接收方,要求每次接收到报文段都应该对最后一个已收到的有序报文段进行确认。例如已经接收到 M1 和 M2,此时收到 M4,应当发送对 M2 的确认。
在发送方,如果收到 三个重复确认 ,那么可以知道下一个报文段 丢失 ,此时执行快重传,立即重传下一个报文段。例如收到三个 M2,则 M3 丢失,立即重传 M3。
在这种情况下,只是丢失个别报文段,而不是网络拥塞。因此执行快恢复,令 ssthresh = cwnd / 2 ,cwnd = ssthresh,注意到此时 直接进入拥塞避免
慢开始和快恢复的快慢指的是 cwnd 的 设定值 ,而 不是 cwnd 的增长速率 。慢开始 cwnd 设定为 1,而快恢复 cwnd 设定为 ssthresh。

DNS的端口号;TCP还是UDP;作为缓存、负载均衡

  • DNS 使用 53 号端口号
  • DNS 默认使用 UDP 传输协议,但是当传输的信息超过 512 字节的时候,更改为 TCP 传输协议

参考资料

1.CyC2018 大佬的 Github

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值