网络复习


计算机网络复习

0. OSI 7 层模型

  • 应用层:决定了向用户提供应用服务时通信的活动。
    • FTP、DNS 服务、HTTP、SSH、SMTP、SSL/TLS 等
  • 表示层:对上层数据或信息进行变换,包括数据的加密、压缩、格式转换等。
  • 会话层:会话层管理会话进程负责建立、管理、终止进程之间的会话。
  • 传输层:提供端到端的数据传输,可以是可靠的或不可靠的。
    • TCP 协议、UDP 协议
  • 网络层:选择传输路线来处理数据包,数据包是网络传输的最小数据单位。
    • IP 协议
  • 数据链路层:处理连接网络的硬件部分。
  • 物理层:确保原始数据可以在各种物理媒体上传输。

在TCP/IP模型中,ARP 协议属于网络层协议;在OSI参考模型中,ARP属于数据链路层协议。

0.1 各层中连接所需的中转设备

  • 物理层:中继器 repeater
  • 数据链路层:网桥 bridge,交换机
  • 网络层:路由器 Router
  • 网桥和路由器的混合设备: 桥路器 brouter
  • 网络层以上的中继: 网关 gateway

0.2 屏蔽作用

高层对低层是信息屏蔽的。即底层无法理解高层的信息。

1. 物理层

物理层确保原始的数据可在各种物理媒体上传输。

  • 两个重要的设备:中继器(Repeater,也叫放大器) 和 集线器
    • 中继器用于在通过物理层的连接来延长网络,可以对减弱的信号进行放大和发送。

2. 数据链路层

数据链路层在物理层基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。

该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。

有关数据链路层的重要知识点:

  1. 数据链路层为网络层提供可靠的数据传输;
  2. 基本数据单位为
  3. 两个重要设备名称:网桥交换机

3. 网络层

网络层的作用是为互联网中的主机之间提供逻辑通信。

3.0 IP 地址

IP 地址:32 位二进制,由 网络号 + 主机号 构成。用来标识网络设备。

  • 网络号 (net-id)标识该主机或路由器所在的网络
    • 处于同一网络号下的设备在同一个局域网内
      • 局域网内可以通过中继器或者网桥再搭建若干个局域网,但这些局域网仍处于同一网络,因为具有相同的网络号
  • 主机号 (host-id) 标识该主机或路由器本身

IP 地址具有层次性

  • 分配 IP 地址时,管理机构只负责分配网络号;而主机号则由局域网内部自行分配
  • 路由器仅根据目的主机的网络号来转发分组,从而减小路由表中的存储空间

3.1 IP 协议

Internet Protocol, 因特网协议。位于网络层,负责传输数据包。

  • 传输根据 IP 地址和 MAC 地址。
  • 网络通信的中转机制称为 路由选择

与 IP 协议配套使用的还有三个协议:

  1. 地址解析协议 ARP (Address Resolution Protocol):通过 IP 地址来反查 MAC 地址。
  2. 网际控制报文协议 ICMP (Internet Control Message Protocol):基于 ip协议工作,负责确认ip数据包是否到达,并通知丢包的原因。
  3. 网际组管理协议 IGMP (Internet Group Management Protocol):用于ip主机向邻接的路由器报告他们的组成员情况。

3.2 ARP 地址解析协议

ARP协议,即 Address Resolution Protocol,地址解析协议。

把网络层的 IP 地址解析成 数据链路层的 硬件地址(MAC 地址)。

  • ARP 解决的是同一个局域网内部 IP 地址 和 硬件地址 的映射关系
    • 局域网内的每个主机都维护一个 ARP Cache,存放局域网内 各主机与路由器的 IP地址 与 硬件地址的映射表
  • 若目标主机与源主机不在同一个局域网内,则通过 ARP 找到局域网与外部网络之间的路由器,然后把分组发送给路由器,由路由器来把分组转发给下一个网络。

3.3 虚拟局域网 VLAN

VALN 即 Virtual Local Area Network,虚拟局域网。

VLAN 是一组逻辑上的设备,它们不受物理位置的限制,可以根据功能等因素把它们组织起来,使它们之间相互的通信就像在同一个网段中一样,因此叫虚拟局域网。

VLAN 工作在 osi 模型的数据链路层和网络层,VLAN 之间的通信依赖网络层的路由器来实现。

优点:

  1. 减少网络设备的移动、添加、修改的管理开销
  2. 控制广播活动
  3. 提高网络安全性

4. 传输层

传输层的作用是为应用进程之间提供端到端的逻辑通信。

  • 通信的双方是应用进程。
  • 进程的标志是端口号

传输层的重要作用是复用和分用:

  • 复用:就是所有应用层的进程都可以通过传输层再传送到IP层(网络层)
  • 分用:就是传输层从IP层(网络层)接收到发送给本主机应用的数据后,负责分别交付对应的各应用进程

4.1 16 位端口

端口号 16 位,标志本计算机应用层中的各个进程。

  • 网络层中,IP 地址可以标识网络中的计算机位置
  • 而端口号则是标识该计算机中的应用进程

4.1.1 常用的端口

4.2 UDP 协议

User Data Protocol,用户数据协议。

UDP 协议是无连接的,是不可靠的信道。

  • 传送数据不需要建立连接
  • 对方收到 UDP 报文后,无需给出确认。UDP不保证数据按序到达,也不保证数据到达,只是努力交付。
  • 支持一对一、一对多、多对一、多对多的通信
  • 首部开销小,为 8 字节。(TCP 首部为 20 字节)

UDP 在 IP 数据报服务的基础上增加了:

  • 复用和分用
    • 多路复用:在源主机的不同套接字收集数据块,然后装上首部信息,生成报文段,并传递到网络层
    • 多路分解:把传输层报文段中的数据交付给正确的套接字
  • 差错检测:通过 checkSum 字段来检测传输是否出错

4.3.1 名词定义

  • 套接字:连接应用层与传输层的管道,是网络通信的基础。网络中的两个进程通信,就依赖套接字来建立连接。
  • 数据块:拆解下来的数据
  • 报文段:传输层给数据块封装首部信息,包括源端口号和目标端口号
  • 数据报:网络层给报文段封装首部信息,包含源 IP 地址和目标 IP 地址

4.3.2 UDP 报文

UDP 报文包括 报文首部 + 数据部分

  • UDP 报文首部有 4 个字段,每个字段占 2 个字节,一共 8 个字节。
    • 源端口号
    • 目标端口号
    • UDP 段长度(包含首部)
    • 校验和 CheckSum:把首部和数据的所有数据分成16位数据,然后进行求和,超出 16 位的部分接到后面,最后结果取反
      • 若计算得到的校验和与 CheckSum 不等,则传输一定出错(比如数据缺失)
      • 若相等,则也可能存在错误(比如存在数位交换)
  • 数据即为应用层报文
    • UDP 是面向报文的,应用层交付给传输层的报文,UDP 会照原样进行发送
伪首部

源ip,目的ip,udp长度,协议号 17,补零

伪首部是在传输层构造,既不向下层传递,也不向上层传递,仅用于计算校验和

  • 计算 UDP 报文长度时,也不会把伪首部计算进去

4.3.3 对比 TCP 和 UDP (重要)

  1. TCP 是有连接的,要经过三次握手建立连接,四次挥手结束连接;而 UDP 是无连接的。
  2. TCP 是可靠的,保证数据按序到达,提供超时重传;UDP 不保证按序到达,甚至不保证到达,只是努力交付数据。
  3. TCP 占用更多的网络资源,TCP 首部至少20字节,UDP 首部8字节。
  4. TCP 有流量控制和拥塞控制;UDP 没有,网络拥堵不影响发送端的发送速率。
  5. TCP 是一对一连接;UDP 支持一对一、一对多、多对多的连接。
  6. TCP 是面向字节流的服务;UDP 是面向报文的服务。

4.3 TCP 协议

Transmission Control Protocol, 传输控制协议。

TCP 协议是面向连接的协议,会提供可靠的一对一全双工信道。每个 TCP 连接都是双向连接。

  • 传输可靠,会按顺序进行交付,提供差错检验
  • 速度比 UDP 慢,头部更大
  • 支持流量控制、拥塞控制
  • 面向字节流的形式进行传输
  • 一对一传输

TCP/IP 中的套接字 socket

socket 绑定 IP + 端口号,可以看成是连接应用程序与网络驱动程序的桥梁。在 tcp 和 udp 中都有应用。

socket 在网络分层中的位置

在 TCP/IP 通信中,在应用层上,每个应用程序对应一个 socket,

  • 应用程序把数据给 socket,然后 socket 通过传输层向下提交数据给网络驱动程序,并向网络发送出去,完成数据发送;
  • 计算机从网络中收到与该 socket 绑定的IP地址和端口号的相关数据,由网络驱动程序通过传输层向上提交给应用层的 socket,然后应用程序从 socket 中提取数据,完成数据接收。

socket的工作过程

4.3.0 TCP 报文

TCP 会把来自于应用层的数据块看成字节流,然后把字节流分割、组合成报文段。

TCP 报文段首部最小长度为 20 字节

  • 20 字节是固定长度
  • 4*n 字节按需增加,是 4 字节(32 位) 的整数倍

TCP 首部各个部分的作用:

  • 源端口号
  • 目的端口号
  • 序号seq:当前报文段的序号
  • 确认号ack:期望收到的源应用程序下一个报文段的第一个数据字节的序号。
    • 计算方式:已收到的报文段序号 + 当前报文的数据长度 + 1
  • 数据偏移:报文段中数据部分距离报文首部的偏移量
  • 保留位:默认为 0
  • URG:标识紧急情况。需要最优先处理,当接收方窗口大小为 0 时也可以发送
  • ACK:标识确认。当 ACK = 1 时确认号字段才有效。
    • 规定:建立连接后,传送的所有报文都需要设置 ACK = 1
  • PSH:标识推送。此时 TCP 发送端应该立即创建一个报文段,并发送出去;接收端也应该尽快交付该报文给应用进程,而不是等多个数据都到了再一起交付。
  • RST:标识复位。在主机崩溃时,会释放 TCP 连接。或者用于拒绝非法报文。
  • SYN:标识同步。用于请求连接或者接受连接
  • FIN:标识发送结束。发送方已经结束发送数据。
  • 窗口:接收方告知发送方自己最大可以接受的数据量。
  • 校验和:伪首部、首部、数据划分为多个16位二进制数,然后原码求和,进位补到后面,再取反。
  • 紧急指针:指出紧急数据的末尾在报文段中的位置
  • 选项:长度可变,最大为 40 字节,可加入:
    • 报文段的数据字段最大长度 MSS(指定TCP向IP层递交数据的最大长度,其大小应该使得传输尽量多的数据同时又使得IP层不需要再次分片)
    • 窗口扩大选项(原本窗口大小为16位2进制,现在最多可以在补充14位,达到30位2进制)
    • 时间戳(用于计算RTT和处理序列号超过2^32绕回0出现原本序号重复的问题)
  • 填充:为了对齐 4 字节

TCP 伪首部:与UDP一样,不过协议标识是6,代表tcp协议。

  • 源ip,目的ip,补零,协议号6,tcp长度

4.3.1 TCP 连接的建立与释放

三次握手

三次握手的过程:
  1. A 向 B 发送请求建立 TCP 连接的报文段。(第一次握手后进入 SYN_SEND 状态)
    • 其中 TCP 报文首部中,SYN = 1 表示请求建立连接,
    • 并选择序号 seq = x 表示传送数据时的第一个数据字节的序号是 x;
  2. B 收到 A 的请求后,如果同意建立连接,则回复确认报文。(第二次握手后进入 SYN_RECV 状态)
    • 确认报文段的首部设置 SYN = 1 表示同意建立连接;
    • ACK = 1, 确认号 ack = x + 1,表示确认收到了连接请求。
    • 设置自己的序号 seq = y
  3. A 收到确认报文后,向 B 回复确认报文。这时 A 的 TCP 会向上层应用进程通知,连接已经建立。(第三次握手后进入 ESTABLISHED 状态)
    • 设置 ACK = 1 ,确认号 ack = y + 1,表示确认收到了确认报文。
  4. B 收到来自 A 的确认报文,通知 B 的上层应用进程,TCP 连接已经建立。
为什么需要三次握手

三次握手的目的是防止已失效的连接请求报文段突然有传送到了,而产生错误。

比如,A 向 B 之前发送的一个连接请求报文并没有丢失,而是在某个网络结点发生了滞留,从而导致延时到达 B,但这个报文段早已失效。但 B 不知道它已失效,误以为它是 A 发出的新的连接请求,于是正常处理,向 A 发送确认报文,同意建立连接。

  • 此时如果通过 2 次握手,则 B 会认为连接已经建立,从而一直等待。
  • 如果通过 3 次握手,则 A 并不会回复这个过期报文的确认,从而连接不能建立。如果连接请求是正常不过期的连接请求的话,3 次握手能正常建立 TCP 连接。
  • 4 次握手则浪费资源,因为 A 和 B 都已经确认同意建立连接了。
四次挥手

四次挥手的过程:

  1. A 向 B 发送释放 TCP 连接的报文段,并停止再发送数据,主动关闭 A->B 的 TCP 连接。
    • 设置报文段首部 FIN = 1 表示数据已发送完,报文段序号 seq = u
  2. B 收到 A 的释放连接报文,回复确认报文。TCP 会通知上层应用进程,从 A -> B 的 TCP 连接已经释放。此时只剩 B -> A 方向的连接,B 仍然可以向 A 发送数据。
    • 此时设置 ACK = 1, 确认号 ack = u + 1, 设置确认报文的序号为 seq = v
  3. 若 B 此时没有要继续向 A 发送的报文了,则应用程序会向下通知 TCP 关闭 B->A 的连接。此时 B 会向 A 发送释放连接的报文。
    • 设置 FIN = 1ACK = 1,确认号 ack = u + 1, 序号 seq = w
  4. A 收到 B 的连接释放报文,会回复确认。
    • 设置 ACK = 1, 确认号 ack = w + 1,序号 seq = u + 1

最后,A 需要等待 2MSL(最大报文生存时间) 时间,原因是 A 发送出去的第四次握手报文可能在 MSL 时间后没有到达 B,从而失效;而 B 则会超时重传第三次握手报文,该报文的最大存活时间也是 MSL。

  • 如果小于 2MSL,可能在释放端口后,新的占用会再次连接端口,这样存活在网络中的老 TCP 报文会与新的 TCP 连接产生冲突。

4.3.2 面向字节流发送数据

应用层交付给 TCP 的是一次一个大小不等的数据块,但 TCP 把这些数据块看成是无结构的字节流,TCP 对这些字节流自行进行缓存保存。

  • 如果数据块太大,TCP 可以划分为短数据块,分别构成报文然后发送
  • 如果数据块太小,TCP 可以积累足够多的数据后再合并构成报文,然后发送

TCP 会根据 接受方给出的窗口值当前网络拥塞的程度,来决定一个报文段的大小。

4.3.3 如何支持可靠传输

  1. 数据分段传输
  2. 回复确认机制
  3. 超时重传机制:停止等待协议
  4. 通过窗口机制实现了流量控制与拥塞控制

TCP 的可靠传输建立在网络层 IP 协议的不可靠传输之上。

  • 数据链路层的数据传输是可靠的,但如果在网络层数据传输出现了错误,传输层 TCP 用来纠正这些错误。

为了支持可靠传输,TCP 首部增大,并且需要占用更多的处理机资源。

停止等待协议

停止等待即每次发送完一个分组后,就停止发送,直到收到对方的确认信息。在收到确认信息后,再发送下一个分组。

发送方为每个已发送的分组会设置一个超时计时器,这些分组会进行编号

  • 如果在超时计时器到期之前收到了接收方对该分组的确认信息,则撤销该计时器,继续发送下一个分组
  • 否则会对当前分组进行超时重传
    • 重传首先要求发送方数据不能丢失,所以发送方维护缓存,已发送但未收到确认的数据会保护在缓存中。
    • 重传是发送方自动进行的,接收方不会请求发送方重新发送出错的分组。
连续 ARQ 协议
滑动窗口

滑动窗口以字节为单位,发送方和接收方各持有一个窗口。

  • 接收方通过 TCP 报文段首部中的窗口字段来告知发送方自己的窗口大小
  • 发送方根据接收方的告知和其他信息来设置自己的窗口大小
发送缓存与接收缓存

缓存通常要比窗口更大。窗口是缓冲区的一部分。

发送缓存存放了:

  1. 应用程序传送给下层 TCP,并准备发送的数据(未进入发送窗口的数据)
  2. TCP 已经发送但未收到确认的数据(发送窗口中的数据)

接收缓存存放了:

  1. 按序到达,但未被应用程序接收的数据
  2. 未按序到达的,需要等待的数据

发送方

发送方会维持一个发送窗口,位于该发送窗口内的分组都可以连续地发送出去,不需要等待接收方的确认。这样就提高了信道的利用率。

  • 发送方每收到一个来自于接受方的确认,则就把窗口往前移动到第一个已发送但未收到确认的位置。
  • 接收方不会对每个收到的分组逐个发送确认,而是对按序到达的最后一个分组发送确认,表示截止到该分组的所有分组都已正确接收。
    • Go-back-N 回退 N:若中间的某个分组 A 丢失,则接收方只会对该丢失的分组之前的分组发送确认,即从 A 往后的所有 N 个分组都需要发送方重新发送。

接收方

接收方维持一个接收窗口,窗口内已经发送了确认已经将应用字段交付给应用程序后,窗口就向前滑动。

4.3.4 流量控制

通信的双方对数据的处理速率不一定相等,流量控制是指控制发送端发送数据的速率,以便接收端来得及接收。

TCP 通过可变滑动窗口来实现流量控制。

  • 接受方每次收到数据包,在返回确认 [ACK] 时同时告诉发送方自己的剩余接受窗口的大小 [win]。
  • 发送方收到确认时,会根据接收方的回馈,调整自己的发送窗口大小。

控制 TCP 报文的发送时机
捎带确认

当应用层只发送很小的数据时,应尽量使用捎带确认

延迟确认

接收方收到数据后,如果暂时没有数据传送给对方,则可以等待一段时间再发送确认信息,但不超过超时重传时间,避免发送方误认为丢包。

  • 如果在时间内,有数据要传送给对方,则 ACK 会随着该数据一块传送过去,不需要对之前的数据单独恢复确认信息。
糊涂窗口综合征

起因是因为发送端或者接收端每次只生成或消耗 1 个字节(很小长度的数据),导致传输效率低。

解决方案:

  • 如果是由发送端引起,则使用 Nagle 算法,积累数据后再发送
  • 如果是由接受方引起,则使用 Clark 算法,先关闭窗口,直到接收缓存能放下具有最大长度的报文段,或者缓存空间有一半以上为空了。
    • 当接收窗口大小为 0 时,发送方就会停止发送数据,防止出现大量丢包。
      • 此时,发送方会开启一个定时器,每隔一段时间就发送一个测试报文去询问接收方的可用窗口剩余。如果 win 还是为 0,则重新刷新定时器计时。
TCP 粘包问题

粘包是指发送方发送的若干个数据包到达接收方时,粘成一包,即后一包的包头紧接着前一包的包尾。可能是由发送方或者接收方造成的:

  • 发送方:为了提高网络传输效率,采用 Nagle 算法把几个包合并发送;
  • 接收方:接收方对数据包的消费不及时造成的:前一包没有被及时消费,而后一包紧接着排在了前一包后面,这样应用程序每次按固定窗口大小取数据时就会造成粘包;
为什么 UDP 不会出现粘包问
  1. 因为 UDP 是面向报文的,而 TCP 是面向字节流的。
  2. UDP 具有消息边界,每个包都是独立的,可以很好的区分数据包。
解决方法
  1. 发送方产生数据后立即传输,通过 PSH 关键字;
  2. 接收方提高接收线程的优先级,提高消费能力;

4.3.5 拥塞控制

拥塞控制就是防止过多的数据注入到网络中,使网络过载。

TCP 拥塞的判断方法
  1. 重传定时器超时
  2. 收到三个相同(重复)的 ACK
TCP 拥塞控制方法

采用基于窗口的方法进行拥塞控制。发送方维护一个拥塞窗口 cwnd ,用来限制发送窗口的大小,它可以根据网络拥塞情况来动态变化。

  • 只要网络不拥塞,就增大窗口,以便可以发送更多的分组,提高网络利用率。
  • 一旦出现拥塞,或可能出现拥塞,则减小窗口,以减少注入到网络中的分组数,缓解网络拥塞。
拥塞窗口 cwnd 与 发送窗口 swnd 的关系

接收方回复确认的时候会声明接收窗口的剩余大小。引入拥塞窗口概念后,发送方会根据接收方窗口大小和拥塞窗口大小,取小者来确定发送窗口的大小。

拥塞控制具体方案
  • 慢开始 slow start:从小的拥塞窗口开始,每次加倍拥塞窗口的大小。窗口大小指数级增长。
    • 慢开始算法应用在 TCP 连接刚建立和网络超时的时候。
  • 拥塞避免 congestion avoidance:同样是让拥塞窗口从小开始逐渐增大,不过增长速率是线性增长。
  • 快重传 fast retransmit:
    • 接收方收到报文段之后立刻回复确认,而不是等到要发送别的数据时才捎带确认。
    • 接收方收到了失序的报文段后,也要立即对之前正确收到的报文段发出重复确认
    • 发送方一旦收到 3 个连续的重复确认,就把相应的报文段立即重传,而不是等待超时重传计时器到期再重传。
  • 快恢复 fast recovery:==当发送方收到 3 个连续的重复确认时==,执行快恢复
    • 为什么执行快恢复而不是慢开始:因为当前发送方会认为既然有连续好几个报文段到达了接收方,则很可能当前网络是不拥堵的。
    • 快恢复具体做法:把慢开始的门限减半(乘法减小),但不执行慢开始算法,而是开始执行拥塞避免算法(加法增大)。

csdn-详解 TCP 中的拥塞控制

5. 应用层

5.1 DNS 域名系统

Domain Name System, DNS 域名系统。

互联网采用层次结构的命名树作为主机的名字,并使用分布式的域名系统 DNS

域名服务器程序在专设的结点上运行,运行该程序的机器称为域名服务器

域名只是个逻辑概念,并不代表计算机所在的物理地点。

DNS 服务器的管辖范围不是以“域”为单位,而是以“区”为单位。一个服务器所负责管辖的(或有权限的)范围叫做区 (zone)

5.1.1 域名的解析过程

两个阶段:

  1. 主机向本地域名服务器查询:递归查询
    • 若本地域名服务器不知道被查询域名的 IP 地址,则本地域名服务器会以 DNS 客户的身份,向其他根域名服务器继续发送查询请求。
  2. 本地域名服务器向根域名服务器查询:迭代查询
    • 当根域名服务器收到本地域名服务器的查询请求时,要么直接给出所查询的域名对应的 IP 地址。要么告诉本地域名服务器,下一步应该向哪个域名服务器进行查询,然后进行后续的查询。

5.2 FTP 协议

文件传送协议 FTP (File Transfer Protocol) 是应用层的一个文件传送协议。用于在服务器与客户端之间实现文件的传输与共享。

  • FTP 提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限

5.2.1 FTP 建立的过程

FTP 会建立 2 个 TCP 连接,并使用两个不同的端口号:

  • 一个控制连接21 口,用于在两个主机之间传输控制信息,如口令,用户标识,存放、获取文件等命令。该链接会一直保持
  • 一个数据连接20 口,用于实际发送一个文件,发送完文件之后数据连接后会关闭。

5.2.2 FTP 的数据传输格式

FTP 支持两种方式的传输:

  • 文本方式 ASCII
  • 二进制方式 Binary

5.2.3 FTP 的传输模式

FTP 有 2 种传输模式:

  • 主动模式 FTP Port:TFP客户端告诉服务端自己开发那个端口作为数据端口,然后让服务端来连接自己。
    • 主动模式存在安全问题。服务端需要主动连客户端,对于客户端的防火墙来说,属于外部连接内部,会出现被阻塞的情况。
  • 被动模式 FTP Passive:控制连接请求和数据连接请求都是由客户端发起。

5.2.4 FTP 的限制

FTP 服务器必须在整个会话期间保持用户的状态 state,必须把特定的用户账户与控制联系起来,当用户在远程目录树上不断跳转时,服务器必须追踪到用户在远程目录树上的位置,一旦客户端数目增大,则会让 FTP 的性能受到限制。

DHCP 协议

dynamic host configuration protocol,动态主机设置协议,是应用层协议,基于UDP工作。

在局域网内工作,用于给内部网络自动分配ip地址。

NAT 协议

Network Address Translation,网络地址转换。

让局域网ip转换为公网ip。

  1. ip转换
    • 静态转换:每次都准换为同一ip
    • 动态转换:随机转换为一个可用公网ip
  2. 端口多路复用:实现虚拟主机,即一个服务器上搭建多个网站。

5.3 电子邮件协议 SMTP,POP3,IMAP

  • 电子邮件发送协议:SMTP
  • 邮件接收协议:POP3、IMAP4

5.3.1 用户代理

用户代理是指软件程序,用于编辑、阅读、回复和转发邮件等。

5.3.2 SMTP 简单邮件传输协议

Simple Mail Transfer Protocol, SMTP 协议服务器占用 25 端口

  • 属于 TCP/IP 协议簇。
  • 是一个基于 推 push 的协议。
工作过程
  1. 建立连接:SMTP 客户会向 SMTP 服务器(25 口)发起 TCP 连接
  2. 发送报文
  3. 终止连接
邮件报文

邮件报文分为 信封内容

  • 内容又分为 首部主体

报文必须由 ASCII 码组成。

5.3.3 POP 邮局协议

Post Office Protocol, POP 协议。用于邮件的接收阶段。

  • 是一个基于 拉 pull 的协议。
  • 采用 客户端-服务器 的工作方式。客户端运行于用户代理中,服务器运行于邮件服务器中。
  • 在用户身份鉴别成功后,才允许用户对邮箱进行读取。

POP3 的 2 种工作方式:

  • 删除方式:每次读取邮件后就把该邮件在邮箱中删除
  • 保存方式:读取邮件后,邮件依然保存在邮箱中

5.3.4 IMAP 因特网邮件读取协议

Internet Mail Access Protocol, IMAP 协议。它克服了 POP 协议的某些缺点,可以在一定程度上让用户操作邮件服务器。

  • 采用 客户端-服务器 的工作方式。

IMAP 提供了 POP3 没有的功能:

  • 检查邮件首部
  • 通过特定字符串检索邮件
  • 下载邮件
  • 在邮件服务器上创建、删除、重命名邮箱,还可以创建分层次的邮箱

5.3.5 MIME 通用因特网邮件扩充协议

Multipurpose Internet Mail Extensions, MIME 协议,是对 SMTP 协议的扩展,而不是取代,因为 SMTP 协议只能传输 7 位 的 ASCII 格式的报文,MIME 还支持其他形式的报文。

  • MIME 发送方把非 ASCII 码数据转换为 NVT ASCII 数据,之后的工作再交给 SMTP 完成,在接收方再将 NVT ASCII 数据还原成原来的数据。

对 SMTP 的扩充:

  1. 支持非 ASCII 码数据
  2. 支持可执行文件等二进制对象文件,或音视频文件
  3. 扩充了 SMTP 的邮件长度

MIME 协议定义的 5 种头部:

 1. MIME-Version:MIME版本
 2. Content-Type:内容类型
 3. Content-Tansfer-Encoding:内容传输编码
 4. Content-ID:内容标识
 5. Content-Description:内容描述

5.4 DHCP 动态主机配置协议

Dynamic Host Configuration Protocol, DHCP 协议。作用在应用层。

用于在局域网中自动分配ip地址。当我们将客户主机 ip 地址设置为动态获取方式时,DHCP 服务器就会根据 DHCP 协议给客户端分配 IP,使得客户机能够利用这个 IP 上网。

5.5 简单网络管理协议 SNMP

Simple Network Management Protocol, SNMP 协议。是 管理程序代理程序 之间的通信规则

  • 管理程序与代理程序是客户端-服务器的关系。
    • 管理程序通过同行 SNMP 客户程序,向某个代理程序发请求,代理程序运行 SNMP 服务器程序,返回响应。
  • SNMP 的基本功能是监视网络性能、检测分析网络差错、配置网络设备等。
  • 管理程序与代理程序之间采用 SNMP 报文进行通信,SNMP 报文则通过 UDP 来传送。

5.6 HTTP 超文本传输协议

详见 HTTP 笔记。

Reference

掘金-

java3y-计算机网络


文章作者: Yu Yang
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Yu Yang !
 上一篇
流形学习+流形学习2.0 流形学习+流形学习2.0
流形学习与流形学习2.01. 流形学习流形学习也是降维的一种,对应非线性降维。流形学习的输入数据在全局上是不满足欧几里得结构的,但在局部上满足欧式空间的性质。 在三维球面上,利用极坐标表示的坐标系可以通过r、$\theta$、$\phi$三
2021-04-16
下一篇 
HTTP 超文本传输协议 HTTP 超文本传输协议
HTTP 整理1. 概念整理1.1 URI 和 URL URI:Uniform Resource Indentifier 统一资源标识符,用于唯一标识一个网络资源 URL:Uniform Resource Locater 统一资源定位符,用
2021-03-01
  目录