JeraKrs +

【总结】计算机网络基础

2020-12-05

计算机网络概述

因特网是一个世界范围的计算机网络,各个端系统之间通过通信链路(Communication link)和分组交换机(Packet switch)连通,传输速率(比特/秒,bit/s,bps)为衡量端到端之间连通性能指标。

协议定义了在两个或多个通信实体之间交换的报文格式和次序,以及报文发送和接受一条报文后其他事件采取的动作。

分组交换和电路交换

电路交换(circuit switching)是以电路连接为目的的交换方式,通信之前要在通信双方之间建立一条被双方独占的物理通道。

分组交换(packet switching)是以分组为单位进行传输和交换的,它是一种存储-转发交换方式,即将到达交换机的分组先送到存储器暂时存储和处理,等到相应的输出电路有空闲时再送出。

电路交换和分组交换的区别在于:分组交换简单、高效、成本低,并且带宽共享,但不适合实时服务;电路交换使用专用电路,可以预测延时,但效率低。

分层的体系结构

因特网五层协议每层的作用和协议:

应用层

应用程序体系结构(application architecture)规定了如何在各种端系统上组织应用程序。当前主流体系有:

进程通过套接字(socket)的软件接口向网络发送报文和从网络接收报文,套接字也称为应用程序和网络之间的应用程序编程接口(Application Programming Interface, API)。

HTTP 超文本传输协议

超文本传输协议(HypeText Transfer Protocol,HTTP)是 Web 的应用层协议。网络应用的客户端、服务器端运行在不同的端系统上,通过交换 HTTP 报文进行会话,HTTP 规定了报文的结构和交换方式。HTTP 是一种无状态协议(Stateless Protocol),即服务器不保存客户状态,但它使用 TCP 作为运输协议,TCP 保证了数据的传输。

HTTP 有两种连接方式:非持续连接(Non-persistent Connection),每个请求/响应对是经过单独的TCP连接发送;持续连接(Persistent Connection),所有请求/响应对是经过相同的TCP连接发送。非持续连接需要对每个请求的对象建立一个新的TCP连接,增大了服务器的压力(HTTP 报文中 Connection 字段表示连接方式,close指不希望使用持续连接)。

HTTP 中的 GET 和 POST

HTTP 和 HTTPS 区别:HTTP 协议运行在 TCP(80端口)之上,所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。HTTPS 协议运行在 SSL/TLS 协议上,SSL/TLS 协议运行在 TCP(443端口) 上,所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。

session 和 cookie 机制:session 技术是服务端的解决方案,它通过服务器来保持状态的;cookie 技术是客户端的解决方案,它是由服务器发给客户端的特殊信息,而这些信息以文本文件的方式存放在客户端,然后客户端每次向服务器发送请求的时候都会带上这些特殊的信息,所以 cookie 存在于四处(HTTP响应报文中的一个 Cookie 首部;HTTP 请求报文中的一个 Cookie 首部;客户端系统保留的 Cookie,由浏览器管理;位于Web站点的一个后端数据库)。

DNS 域名系统

DNS 服务是一个实现查询主机名对应IP地址的黑盒服务,当应用程序希望查询一个主机名对应的IP地址时,会将主机名传递给运行在端系统上的 DNS 客户端,由DNS客户端向DNS服务器查询,最后返回IP地址给应用程序。DNS 解析过程有两种:

运输层

运输层协议为运行在不同主机上的应用程序之间提供了逻辑通信(Logic Communication)功能。由于网络层协议可能发生分组丢失、篡改和冗余,并且不能保证字段的机密性,所以运输层协议为应用程序提供可靠的数据传输服务,且通过加密保证应用程序不被入侵。

运输层的基本任务(可靠数据传输和拥塞控制为 TCP 提供):

多路复用和多路分解

多路复用指从不同套接字中收集数据块,并为每个数据块封装上运输层信息;多路分解指将运输层报文段中的数据交付到正确的套接字。

UDP 用户数据报协议

用户数据报协议(User Datagram Protocol,UDP)实现了运输层的多路复用和多路分解,以及少许的差错检测。DNS 运输层的协议为 UDP 协议。

TCP 传输控制协议

传输控制协议(TCP,Transmission Control Protocol)是面向连接的(Connection-oriented),它的连接状态只维护在两个端系统中。TCP 连接是全双工服务(Full-duplex Service)和点对点(Point-to-Point)服务(全双工指同一时间内支持信号的双向传输)。

TCP 三次握手

为什么要进行三次握手:主要目的防止server端一直等待,浪费资源。

TCP 四次挥手

为什么要四次挥手:由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。

KeepAlive:当超过一段时间之后,TCP 自动发送一个数据为空的报文给对方,如果对方回应了这个报文,说明对方还在线,链接可以继续保持,如果对方没有报文返回,并且重试了多次之后则认为链接丢失,没有必要保持链接。

TCP 重传机制:要保证所有的数据包都可以到达,就必需要有重传机制。而在 TCP 中接收端给发送端的 ACK 确认只会确认最后一个连续的包。例如发送端发送了1-5一共5份数据包,接收端收到了1和2,于是回复 ACK=2,然后又收到了4,但是3还未收到。

SYN泛洪攻击(SYN Flood Attack):发送大量的SYN报文请求建立连接,而不完成第三次握手,导致服务器不断为半开连接分配资源直至资源耗尽。

TCP 拥塞控制

滑动窗口协议:滑动窗口协议是传输层进行流控的一种措施,它允许发送方在停止并等待确认前发送多个数据分组。发送窗口大小 swnd = min(rwnd, cwnd),其中 rwnd 为接收窗口大小,cwnd 为拥塞窗口。(例:连续ARQ协议)

拥塞控制:

网络层

IP 网际互连协议

网际互连协议(Internet Protocol,IP)规定了因特网的转发和编址。

路由选择协议

路由器的路由转发平面(Router Forwarding Plane)负责转发数据;路由控制平面(Router Control Plane)负责路由选择。而路由选择协议(Routing Protocol)规定了如何计算路由控制平面中的路由表。

交换机和路由器的区别:交换机工作于数据链路层,用来隔离冲突域,连接的所有设备同属于一个广播域(子网),负责子网内部通信;路由器工作于网络层,用来隔离广播域(子网),连接的设备分属不同子网,工作范围是多个子网之间,负责网络与网络之间通信。

链路层

ARP 协议地址解析协议

ARP的作用是将IP地址解析为MAC地址,只为一个子网上的主机和路由器解析。

ARP 协议与 DNS 协议的对比:DNS 协议将主机名解析为 IP 地址,作用于因特网中任何地方;而 ARP 协议是将 IP 地址解析为MAC地址,只为一个子网上的主机和路由器解析。

RARP 协议

RARP是逆地址解析协议,作用是完成硬件地址到IP地址的映射,主要用于无盘工作站。

参考文献

  1. 《计算机网络:自顶向下方法(原书第6版)》(豆瓣),原作名: Computer Networking:A Top-Down Approach,Sixth Edition,作者James F.Kurose,美国马萨诸塞大学阿默斯特分校;Keith W.Ross,纽约大学理工学院,译者陈鸣。
  2. 《计算机网络》阅读笔记 - Jerakrs