计算机网络
网络分层⭐
国际标准化组织提出了 OSI 模型:应用层、表示层、会话层、运输层、网络层、链路层和物理层,理论完善,但复杂且不实用。
学习网络原理使用五层模型:应用层、运输层、网络层、链路层和物理层。
实际使用 TCP/IP 模型:应用层、运输层、网际层和网络接口层。
每层使用下层的服务来提供服务,对等层间的数据单位是协议数据单元 PDU,上下层间的数据单位是服务数据单元 SDU。
应用层
应用层协议定义了应用进程的通信规则,应用进程互相通信完成网络应用。
应用层协议包括:
-
域名解析系统 DNS
DNS 是一个分布式数据库系统,存储了域名和 IP 地址的映射关系。
主机向本地域名服务器的查询采用递归查询:如果本地域名服务器不知道被查询域名的 IP 地址,就会以 DNS 客户的身份向其他根域名服务器继续发出查询请求。
本地域名服务器向根域名服务器查询采用迭代查询:根域名服务器会告知顶级域名服务器的地址,顶级域名服务器给出 IP 地址,或者告知下一步应该向哪个权限域名服务器进行查询。
-
文件传送协议 FTP
FTP 通过TCP 保证可靠运输,使用两个端口,控制端口 21 和数据端口 20,分别进行控制连接和数据连接。
-
电子邮件协议
从用户代理把邮件传送到服务器,以及在服务器之间的传送使用 SMTP 协议。
用户代理从服务器读取邮件时使用 POP3 或 IMAP 协议。
运输层
运输层负责向主机应用进程间的通信提供数据传输服务,由于一台主机可以同时运行多个进程,因此运输层具有复用和分用的功能,复用就是多个应用进程可以同时使用运输层发送数据,分用就是把运输层收到的数据交付给对应的应用进程。
运输层协议包括:
用户数据报协议 UDP,提供无连接的、尽最大努力交付的数据传输服务,不保证可靠性,传输单位是用户数据报。
传输控制协议 TCP,提供面向连接的数据传输服务、保证可靠性,传输单位是报文。
网络层
网络层任务:① 为分组交换网上的主机提供通信服务,在发送数据时把运输层数据报封装成分组传送。② 选择合适路由,使源主机的分组通过路由器找到目的主机。
网络层协议包括:
-
网际协议 IP
一般指 IPv4,与 IP 配套使用的还有 ARP、ICMP 和 IGMP。
IP 数据报分为首部和数据两部分。首部前 20 字节是固定的,包含源地址、目的地址、总长度等,生存时间限制了 IP 数据报在网络中能经过的最大路由数,防止其兜圈子。
要解决 IP 地址耗尽的问题,根本方法是采用具有更大地址空间的 IPv6(128 位)。
-
地址解析协议 ARP
由于 IP 使用了 ARP,因此把 ARP 归到网络层,但 ARP 的作用是通过一个高速缓存,存储本地局域网的各主机和路由器的 IP 地址到硬件地址的映射表,以从网络层的 IP 解析出数据链路层的硬件地址,因此也可以把 ARP 划归在数据链路层。
与 ARP 对应的是 RARP 逆地址解析协议,作用是通过硬件地址找到 IP 地址,被 DHCP 协议取代。
-
路由选择协议
内部网关协议:
RIP:分布式的距离向量协议,适用于小型网络,按固定时间间隔与相邻路由器交换路由表信息。
OSPF:分布式的链路状态协议,适用于大型网络,只在链路状态变化时才向本自治系统中的所有路由器发送相邻路由器的信息。
外部网关协议:
- BGP-4:针对不同自治系统之间的路由器,目标是寻找一条能够到达目的网络且不兜圈子的路由。
-
网际控制报文协议 ICMP
ICMP 报文包括差错报文和询问报文,ICMP 报文作为 IP 数据报的数据,加上首部后组成 IP 数据报发送出去。ICMP 允许主机或路由器报告差错情况,提供有关异常情况的信息。ICMP 的重要应用是分组探测 PING,测试主机间的连通性。
-
网际组管理协议 IGMP
IGMP 的作用是让连接在本地局域网上的多播路由器知道本局域网上是否有主机的某个进程参加或退出了某个多播组。
链路层
数据链路层将网络层的分组封装成帧,在两个相邻结点间的链路上传输,每一帧包括数据和必要的控制信息(同步信息、地址信息、差错信息)。控制信息使接收端能够知道一个帧从哪个比特开始到哪个比特结束,从帧中提取出数据上交给网络层。控制信息还使接收端可以检测收到的帧有无差错,如果有差错就简单地丢弃,避免继续传送而浪费网络资源。
链路层协议包括:
-
点对点协议 PPP
在通信质量较差的年代使用高级数据链路控制 HDLC 作为数据链路层协议,目前使用最广泛的协议是 PPP。PPP 的特点是简单、只检测差错而不纠正、不使用序号也不进行流量控制、同时支持多种网络层协议。
-
CSMA/CD 协议
以太网采用具有冲突检测的载波监听多点接入协议,特点是:发送前先监听、边发送边监听,一旦发现总线上出现了碰撞就立即停止发送,然后按退避算法等待一段随机时间后再次发送。
物理层
物理层尽可能屏蔽传输媒体和通信手段的差异,使数据链路层只需考虑本层协议和服务。
物理层的数据单位是比特,发送方和接收方发送和接收 1 或 0,因此物理层需要考虑用多大的电压代表 1 或 0,以及接收方如何识别发送方所发送的比特。此外物理层还要确定传输媒体规范,例如接线器形状、电缆电压范围等。
TCP⭐
特点
TCP 是面向连接的,一个应用进程在向另一个进程发送数据前必须先建立连接,发送某些预备报文段。
TCP 提供全双工服务,允许通信双方的应用进程在任何时候发送数据。TCP 连接的两端都有发送缓存和接收缓存:发送时,应用程序把数据传送给 TCP 缓存后就可以做自己的事,TCP 在合适的时候发送;接收时,TCP 把收到的数据放入缓存,应用程序在合适的时候读取。
TCP 连接是点对点的,只能是单个发送方和单个接收方之间的连接。
TCP 提供可靠的交付服务,通过 TCP 传送的数据无差错、不丢失、不重复,按序到达。
TCP 是面向字节流的,流是指流入进程或从进程流出的字节序列。虽然应用程序和 TCP 的交互是每次一个数据块,但 TCP 把数据块仅看成一连串无结构的字节流。TCP 不保证接收方的数据块和发送方的数据块具有对应大小的关系,但接收方的字节流必须和发送方的字节流完全一样。应用程序必须有能力识别收到的字节流,把它还原成应用层数据。
UDP 和 TCP 的区别⭐
UDP 无连接,发送数据前不需要建立连接,减少了开销和时延。
UDP 使用尽最大努力交付,不保证可靠性,主机不需要维持复杂的连接状态。
UDP 面向报文,UDP 对应用层报文添加首部后就交付 IP 层。
UDP 没有拥塞控制,网络拥塞不会降低源主机的发送速率,这对某些实时应用很重要,如视频会议。
UDP 支持一对一、一对多和多对多通信。