计算机网络是互联、自治的计算机集合。
写在前面
重点学习 && 记忆内容:
- 各层次的名称及其功能
- 滑动窗口机制
- TCP的三次握手与四次挥手机制
- TCP与UDP的异同
计算机网络的功能
- 数据通信;
- 资源共享——硬件资源共享、软件资源共享、数据资源共享;
- 分布式处理;
- 提高可靠性;
- 负载均衡。
计算机网络的组成部分——硬件、软件、协议
- 硬件——主机(端系统)、链路(双绞线、光纤)、通信设备(路由器、交换机)
- 安装在端系统上的应用软件——QQ、微信、FTP程序等。
- 协议——一系列约定和规则的集合,用于保证数据在计算机网络中安全、可靠地传播。
计网的主要性能指标——速率、带宽、吞吐量
主机 -> 链路(介质) -> 终端
速率
- 速率,也称数据传输率(比特率),指的是连接在计算机网络中上的主机在数字信道上传送数据位数的速率。
带宽
- 计算机网络中,带宽用来表示网络的通信线路传送数据的能力。带宽通常指单位时间内从网络中某一点到另一点所能通过的“最高数据率”,其单位是比特/秒(b/s);
- 带宽也可以理解为“网络设备所支持的最高传输速度”。如果我买了一个100M的交换机,那就表明它的极限传输速率是100Mb/s,即1s内最多可以往信道or链路中传输的比特数为100M比特。
- 请注意,带宽仅仅指的是主机->链路的速率(入口速率),而不是链路传输速率。实际上的传输速率远远小于带宽。
吞吐量
- 单位时间内,通过某个网络(或信道、接口等)的数据量,单位也是比特/s。
- 吞吐量受网络带宽或网络的额定速率限制。
一些重要的概念
- OSI分层(7层)——物理层、数据链路层、网络层、运输层、会话层、表示层、应用层
- TCP/IP分层(4层)——网络接口层、网络层、运输层、应用层
- 五层协议(5层)——物理层、数据链路层、网络层、运输层、应用层
五层结构概述:
- 应用层:通过应用进程间的交互来完成特定网络应用
主要功能:人与机器电脑交互的窗口
它是计算机用户,以及各种应用程序和网络之间的接口,直接向用户提供服务,完成用户希望在网络上完成的各种工作。它在其他6层工作的基础上,负责完成网络中应用程序与网络操作系统之间的联系,建立与结束使用者之间的联系,并完成网络用户提出的各种网络服务及应用所需的监督、管理和服务等各种协议。此外,该层还负责协调各个应用程序间的工作。
应用层为用户提供的服务和协议有:文件服务、目录服务、文件传输服务(FTP)、远程登录服务(Telnet)、电子邮件服务(E-mail)、打印服务、安全服务、网络管理服务、数据库服务等。上述的各种网络服务由该层的不同应用协议和程序完成,不同的网络操作系统之间在功能、界面、实现技术、对硬件的支持、安全可靠性以及具有的各种应用程序接口等各个方面的差异是很大的。
用户接口:应用层是用户与网络,以及应用程序与网络间的直接接口,使得用户能够与网络进行交互式联系。
数据:报文
协议:HTTP, SMTP(邮件), FTP(文件传送)
(省略了会话层和表示层)
- 运输层:向两个主机进程之间的通信提供通用的数据传输服务。
主要功能:提供可靠和不可靠的传输机制,TCP、UDP
该层是通信子网和资源子网的接口和桥梁,起到承上启下的作用。向用户提供可靠的端到端的差错和流量控制,保证报文的正确传输。向高层屏蔽下层数据通信的细节,即向用户透明地传送报文。该层常见的协议:TCP/IP中的TCP协议、Novell网络中的SPX协议和微软的NetBIOS/NetBEUI协议。提供会话层和网络层之间的传输服务,这种服务从会话层获得数据,并在必要时,对数据进行分割。然后,传输层将数据传递到网络层,并确保数据能正确无误地传送到网络层。因此,传输层负责提供两节点之间数据的可靠传送,当两节点的联系确定之后,传输层则负责监督工作。
传输连接管理:提供建立、维护和拆除传输连接的功能。传输层在网络层的基础上为高层提供“面向连接”和“面向无接连”的两种服务。
处理传输差错:提供可靠的“面向连接”和不太可靠的“面向无连接”的数据传输服务、差错控制和流量控制。在提供“面向连接”服务时,通过这一层传输的数据将由目标设备确认,如果在指定的时间内未收到确认信息,数据将被重发。
数据:TCP:报文段,UDP:用户数据报
协议:TCP, UDP
- 网络层:为分组交换网上的不同主机提供通信服务
主要功能:逻辑寻址,IP地址,在下两层的基础上向资源子网提供服务。 通过路由选择算法,为报文或分组通过通信子网选择最适当的路径。该层控制数据链路层与传输层之间的信息转发,建立、维持和终止网络的连接。具体地说,数据链路层的数据在这一层被转换为数据包,然后通过路径选择、分段组合、顺序、进/出路由等控制,将信息从一个网络设备传送到另一个网络设备。
一般地,数据链路层是解决同一网络内节点之间的通信,而网络层主要解决不同子网间的通信。例如在广域网之间通信时,必然会遇到路由(即两节点间可能有多条路径)选择问题。
在实现网络层功能时,需要解决的主要问题如下:
寻址:数据链路层中使用的物理地址(如MAC地址)仅解决网络内部的寻址问题。在不同子网之间通信时,为了识别和找到网络中的设备,每一子网中的设备都会被分配一个唯一的地址。由于各子网使用的物理技术可能不同,因此这个地址应当是逻辑地址(如IP地址)。
交换:规定不同的信息交换方式。常见的交换技术有:线路交换技术和存储转发技术,后者又包括报文交换技术和分组交换技术。
路由算法:当源节点和目的节点之间存在多条路径时,本层可以根据路由算法,通过网络为数据分组选择最佳路径,并将信息从最合适的路径由发送端传送到接收端。
连接服务:与数据链路层流量控制不同的是,前者控制的是网络相邻节点间的流量,后者控制的是从源节点到目的节点间的流量。其目的在于防止阻塞,并进行差错检测。
数据:包或IP数据报
协议:IP
- 数据链路层:
主要功能:负责建立和管理节点间的链路,将数据封装成帧,进行可靠传输 通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。该层通常又被分为介质访问控制(MAC)和逻辑链路控制(LLC)两个子层。 MAC子层:主要任务是解决共享型网络中多用户对信道竞争的问题,完成网络介质的访问控制; LLC子层:主要任务是建立和维护网络连接,执行差错校验、流量控制和链路控制。 数据链路层的具体工作:接收来自物理层的位流形式的数据,并封装成帧,传送到上一层;同样,也将来自上层的数据帧,拆装为位流形式的数据转发到物理层;并且,还负责处理接收端发回的确认帧的信息,以便提供可靠的数据传输。 数据:帧
- 物理层:
主要功能:在介质上传输比特流 利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。物理层的作用是实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。使其上面的数据链路层不必考虑网络的具体传输介质是什么。“透明传送比特流”表示经实际电路传送后的比特流没有发生变化,对传送的比特流来说,这个电路好像是看不见的。 数据:比特
应用层
域名系统DNS
举个栗子:某用户通过主机A浏览北理工主页 www.bit.edu.cn
- A向本地域名服务器DNS查询IP地址;
- 如果DNS上有 www.bit.edu.cn 的记录,就立即返回IP地址给主机A;
- 如果DNS上没有该域名记录,则DNS向根域名服务器发出查询请求;
- 根域名服务器把负责cn域的顶级域名服务器B的IP地址告诉DNS;
- DNS向B查询获得二级域名服务器C的IP地址,最终迭代查询到 www.bit.edu.cn 的ip直接返回DNS。
HTTP 与 HTTPS
HTTP
HTTP 协议定义了客户端和服务器之间交互的消息内容和步骤。
HTTP请求报文
- 常用的 HTTP 请求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT;
GET:当客户端要从服务器中读取某个资源时,使用GET 方法。GET 方法要求服务器将URL 定位的资源放在响应报文的部分,回送给客户端,即向服务器请求某个资源。使用GET 方法时,请求参数和对应的值附加在 URL 后面,利用一个问号(“?”)代表URL 的结尾与请求参数的开始,传递参数长度受限制。例如,/index.jsp?id=100&op=bind。
POST:当客户端给服务器提供信息较多时可以使用POST 方法,POST 方法向服务器提交数据,比如完成表单数据的提交,将数据提交给服务器处理。GET 一般用于获取/查询资源信息,POST 会附带用户数据,一般用于更新资源信息。POST 方法将请求参数封装在HTTP 请求数据中,以名称/值的形式出现,可以传输大量数据;
HEAD(请求头部):请求头部由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。请求头部通知服务器有关于客户端请求的信息,典型的请求头有:
- User-Agent:产生请求的浏览器类型;
- Accept:客户端可识别的响应内容类型列表;星号 “ * ” 用于按范围将类型分组,用 “ / ” 指示可接受全部类型,用“ type/* ”指示可接受 type 类型的所有子类型;
- Accept-Language:客户端可接受的自然语言;
- Accept-Encoding:客户端可接受的编码压缩格式;
- Accept-Charset:可接受的应答的字符集;
- Host:请求的主机名,允许多个域名同处一个IP 地址,即虚拟主机;
- connection:连接方式(close 或 keepalive);
- Cookie:存储于客户端扩展字段,向同一域名的服务端发送属于该域的cookie;
HTTPS的加密流程
由于HTTP的内容在网络上实际是明文传输,并且也没有身份验证之类的安全措施,所以容易遭到挟持与攻击 HTTPS是通过SSL(安全套接层)和TLS(安全传输协议)的组合使用,加密TCP载荷即HTTP报文内容,同时通过不对称密钥方式认证身份,保证传输的安全可靠 即:HTTP+加密+认证+完整性保护=HTTPS
HTTP与HTTPS的区别
- HTTP 是超文本传输协议,信息是明文传输,存在安全风险的问题。HTTPS 则解决 HTTP 不安全的缺陷,在 TCP 和 HTTP 网络层之间加入了 SSL/TLS 安全协议,使得报文能够加密传输。
- HTTP 连接建立相对简单, TCP 三次握手之后便可进行 HTTP 的报文传输。而 HTTPS 在 TCP 三次握手之后,还需进行 SSL/TLS 的握手过程,才可进入加密报文传输。
- HTTP 的端口号是 80,HTTPS 的端口号是 443。
- HTTPS 协议需要向 CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的。
运输层
TCP
TCP层是位于IP层之上,应用层之下的中间层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。 当应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,TCP则把数据流分割成适当长度的报文段,最大传输段大小(MSS)通常受该计算机连接的网络的数据链路层的最大传送单元(MTU)限制。之后TCP把数据包传给IP层,由它来通过网络将包传送给接收端实体(可以理解为物理层)的TCP层。
TCP为了保证报文传输的可靠,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。
TCP协议和IP协议一起组成了TCP/IP协议,TCP/IP是用于计算机通信的一组协议,我们通常称它为TCP/IP协议族。以它为基础组建的Internet是目前国际上规模最大的计算机网络,正因为Internet的广泛使用,使得TCP/IP成了事实上的标准。之所以说TCP/IP是一个协议族,是因为TCP/IP协议包括TCP、IP、UDP、ICMP、RIP、TELNETFTP、SMTP、ARP、TFTP等许多协议,这些协议一起称为TCP/IP协议。
- TCP的主要功能:
- 完成对数据报的确认、流量控制和网络拥塞;
- 自动检测数据报,并提供错误重发的功能;
- 将多条路径传送的数据报按照原来的顺序进行排列;
- 控制超时重发,自动调整超时值。
- TCP的三次握手与四次挥手
UDP
- UDP不建立连接,是一种不可靠服务。UDP新增功能:复用/分用 & 拆分检测
- UDP特点:
- 无连接(无建立连接、维护连接与释放连接所产生的开销);
- 使用最大努力交付,即不保证可靠交付(如果使用了UDP,则只能使用传输层上一层,也即应用层来保证可靠性);
- UDP是面向报文的;
- UDP无拥塞控制(适合实时性高的应用,如视频会议);
- 首部开销少(8字节),对应地TCP的首部为20个字节。