计算机网络
内容大纲
- OSI七层参考模型
- TCP/UDP 传输协议
- 常见的应用层协议
1. OSI七层参考模型
从因特网的工作方式上看,可以划分为两大块:
- (1) 边缘部分 由所有连接在因特网上的主机组成。这部分是用户直接使用的,用来进行通信(传送数据、音频或视频)和资源共享。
- (2) 核心部分 由大量网络和连接这些网络的路由器组成。这部分是为边缘部分提供服务的(提供连通性和交换)。
image.png
边缘部分
处在因特网边缘的部分就是连接在因特网上的所有的主机。这些主机又称为端系统(end system)。
计算机之间的通信--“主机 A 和主机 B 进行通信”,实际上是指:“运行在主机 A 上的某个程序和运行在主机 B 上的另一个程序进行通信”。即“主机 A 的某个进程和主机 B 上的另一个进程进行通信”。
计算机网络的体系结构
计算机网络是个很复杂的系统,相互通信的两个计算机系统必须高度协调工作才行,而这种“协调”是相当复杂的。
“分层”可将庞大而复杂的问题,转化为若干较小的局部问题,而这些较小的局部问题就比较易于研究和处理。
法律上的国际标准 OSI(开放系统互连参考模型OSI/RM )--没有得到市场的认可。
非国际标准 TCP/IP 现在获得了最广泛的应用。--TCP/IP 常被称为事实上的国际标准。
具有五层协议的体系结构
计算机网络的体系结构
(architecture)是计算机网络的各层及其协议的集合。
2. TCP/UDP 传输协议
image.png运输层的主要功能
运输层为应用进程之间提供端到端的逻辑通信(但网络层是为主机之间提供逻辑通信)。
运输层还要对收到的报文进行差错检测。
运输层需要有两种不同的运输协议,即面向连接的 TCP 和无连接的 UDP。
运输层的两个主要协议
- UDP 在传送数据之前不需要先建立连接。对方的运输层在收到 UDP 报文后,不需要给出任何确认。虽然 UDP 不提供可靠交付,但在某些情况下(远程视频会议系统等) UDP 是一种最有效的工作方式。
- TCP 则提供面向连接的服务。TCP 不提供广播或多播服务。由于 TCP 要提供可靠的、面向连接的运输服务,因此不可避免地增加了许多的开销。这不仅使协议数据单元的首部增大很多,还要占用许多的处理机资源。
TCP 的连接
每一条 TCP 连接有两个端点。
TCP 连接的端点不是主机,不是主机的IP 地址,不是应用进程,也不是运输层的协议端口。TCP 连接的端点叫套接字(socket) 。
端口号拼接到IP 地址即构成了套接字socket = (IP地址: 端口号)
每一条 TCP 连接唯一地被通信两端的两个端点(即两个套接字)所确定。即:
TCP 连接 ::= {socket1, socket2}
= {(IP1: port1), (IP2: port2)}
TCP 报文段的首部格式
image.png源端口和目的端口——各占 2 字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。
传输层和应用层之间的端口号可以有2^16个。
序号字段——占 4 字节。TCP 连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。
确认号字段——占 4 字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。
数据偏移(即首部长度)——占 4 位,它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。“数据偏移”的单位是 32 位字(以 4 字节为计算单位)。
保留字段——占 6 位,保留为今后使用,但目前应置为 0。
紧急 URG —— 当 URG = 1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。
确认 ACK —— 只有当 ACK = 1 时确认号字段才有效。当 ACK = 0 时,确认号无效。
推送 PSH (PuSH) —— 接收 TCP 收到 PSH = 1 的报文段,就尽快地交付接收应用进程,而不再等到整个缓存都填满了后再向上交付。
复位 RST (ReSeT) —— 当 RST = 1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。
同步 SYN —— 同步 SYN = 1 表示这是一个连接请求或连接接受报文。
终止 FIN (FINis) —— 用来释放一个连接。FIN 1 表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。
窗口字段 ——占 2 字节,指发送本报文段一方的接收窗口,用来让对方设置发送窗口的依据,单位为字节。
检验和 —— 占 2 字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部。
在计算检验和时,临时把“伪首部”和TCP 报文段连接在一起。伪首部仅仅是为了计算检验和。
image.png
紧急指针字段 —— 占 16 位,指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)。
选项字段 —— 长度可变。TCP 最初只规定了一种选项,即最大报文段长度 MSS。MSS 告诉对方 TCP:“我的缓存所能接收的报文段的数据字段的最大长度是 MSS 个字节。”
TCP 的运输连接管理
TCP是面向连接的协议。每一次面向连接的通信都需要连接建立和释放的过程。
运输连接的三个阶段:连接建立、数据传送和连接释放。
连接建立过程中要解决以下三个问题:
- 要使每一方能够确知对方的存在。
- 要允许双方协商一些参数(如最大报文段长度,最大窗口大小,服务质量等)。
- 能够对运输实体资源(如缓存大小,连接表中的项目等)进行分配。
TCP的连接建立
image.png image.png image.png用三次握手建立 TCP 连接的各状态
image.png常见的应用层协议
- DNS(Domain Name System,域名系统 )
- HTTP(HyperText Transfer Protocol,超文本传输协议)
- HTTPS(HyperText Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道。
- WebSocket
1、域名系统 DNS
IP 地址既难记忆,又很难从键盘输入。
一个事实:
人不擅长于记忆长串数字,
但记忆名字却比较容易。
因此想到把 IP 地址变成名字。因特网设立专门的机构(ICANN)管理名字.
域名服务器
image.png根域名服务器并不直接把域名转换成 IP 地址。在使用迭代查询时,根域名服务器把下一步应当找的顶级域名服务器的 IP 地址告诉本地域名服务器。
顶级域名服务器负责管理在该顶级域名服务器注册的所有二级域名。收到 DNS 查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应当找的域名服务器的 IP 地址)。
权限域名服务器负责一个区域的域名服务器。当一个权限域名服务器还不能给出最后的查询回答时,就会告诉发出查询请求的 DNS 客户,下一步应当找哪一个权限域名服务器。
本地域名服务器对域名系统非常重要。
当一个主机发出 DNS 查询请求时,这个查询请求报文就发送给本地域名服务器。
每一个因特网服务提供者 ISP,或一个大学,甚至一个大学里的系,都可以拥有一个本地域名服务器,
这种域名服务器有时也称为默认域名服务器。
image.png
Host文件
- hosts文件是Windows系统中一个负责IP地址与域名快递解析的文件,以ASCLL格式保存。键入域名的时候,首先会去看看hosts文件中有没有关于此域名IP地址的记录。如果有,就直接登陆该网站;如果没有再查询DNS服务器。
- Host文件通常在\system32\drivers\etc下。
- 每个映射关系表示一个IP地址和主机名的对应关系。如:127.0.0.1 localhost
2、HTTP
- 万维网 WWW (World Wide Web) 用链接的方法能非常方便地从因特网上的一个站点访问另一个站点,从而主动地按需获取丰富的信息。
- 浏览器就是在用户计算机上的万维网客户程序。万维网文档所驻留的计算机则运行服务器程序,这个计算机也称万维网服务器。
- 使用统一资源定位符 URL (Uniform Resource Locator)来标志万维网上的各种文档。
- 万维网客户程序与万维网服务器程序之间进行交互所使用的协议是超文本传送协议 HTTP (HyperText Transfer Protocol)。
- 使用超文本标记语言 HTML (HyperText Markup Language)使得各种万维网文档都能在因特网上的各种计算机上显示出来,同时使用户清楚地知道在什么地方存在着超链。
URL 的一般形式
- URL一般由四部分组成,在 URL 中的字符对大写或小写没有要求。
-
访问不同对象所使用的协议不同,URL指出读取某个对象所使用的协议。URL 的一般形式是:
image.png - http://www.jnshu.com //http协议默认端口80
- 端口号和路径缺省的情况下,此 URL 就指到因特网上的某个主页(home page)。
- 主页:一个www服务器最高级别的页面;某个组织定制的页面或目录;某人自己设计的接收本人情况的www页面。
超文本传送协议HTTP
- HTTP 协议:定义了浏览器怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。
- 从层次的角度看,HTTP 是面向事务的应用层协议,它是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。
image.png
用户点击超链接后发生的事件
(1) 浏览器分析超链指向页面的 URL。
(2) 浏览器向 DNS 请求解析 www.jnshu.com 的 IP 。
(3) 域名系统 DNS 解析出技能树服务器的 IP 地址。
(4) 浏览器与服务器建立 TCP 连接
(5) 浏览器发出取文件命令:
GET /kcsz/index.htm。
(6) 服务器给出响应,把文件 index.htm 发给浏览器。
(7) TCP 连接释放。
(8) 浏览器显示“技能树课程设置”文件 index.htm 中的所有文本。
HTTP 的主要特点
- HTTP使用面向连接的运输层TCP协议,保证数据的可靠传输。
- HTTP 协议本身是无连接的,通信双方在交换HTTP报文之前不需要先建立HTTP连接。
- HTTP 协议是无状态的,即同一个客户第二次访问同一个服务器上的页面时,服务器的响应和第一次相同。
请求一个万维网文档的所需的时间
用户点击鼠标链接到某个万维网文档时,HTTP协议首先和服务器建立TCP连接,需要三次握手,当三次握手的前两部分完成后,浏览器把HTTP请求报文作为三次握手的第三个报文的数据发送给万维网服务器,服务器收到后,就把请求的文档返回给客户。
RTT:往返时延。表示从发送端发送数据开始,到发送端收到来自接收端的确认。
时间 = 文档的传输时间+2RTT
- HTTP/1.0协议采用上述的连接方式,其主要缺点:每请求一个文档就要有2RTT的开销。另外每一次新建立TCP连接都要分配缓存和变量,因服务器同时要服务于大量客户请求,使服务器负担很重。
- HTTP/1.1 协议使用持续连接。万维网服务器在发送响应后仍然在一段时间内保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的 HTTP 请求报文和响应报文。这并不局限于传送同一个页面上链接的文档,而是只要这些文档都在同一个服务器上就行。
- 目前一些流行的浏览器的默认设置就是使用 HTTP/1.1。
代理服务器 (proxy server)
- 代理服务器(proxy server)又称为万维网高速缓存(Web cache),它代表浏览器发出 HTTP 请求。
- 万维网高速缓存把最近的一些请求和响应暂存在本地磁盘中。当与暂时存放的请求相同的新请求到达时,万维网高速缓存就把暂存的响应发送出去,而不需要按 URL 的地址再去因特网访问该资源。
没有高速缓存的情况
image.png使用高速缓存的情况
(1) 浏览器访问因特网的服务器时,要先与校园网的高速缓存建立 TCP 连接,并向高速缓存发出 HTTP 请求报文。
image.png
(2) 若高速缓存已经存放了所请求的对象,则将此对象放入 HTTP 响应报文中返回给浏览器。
(3) 否则,高速缓存就代表发出请求的用户浏览器,与因特网上的源点服务器建立 TCP 连接,并发送 HTTP 请求报文。
image.png
(4) 源点服务器将所请求的对象放在 HTTP 响应报文中返回给校园网的高速缓存。
image.png
(5) 高速缓存收到此对象后,先复制在其本地存储器中(为今后使用),然后再将该对象放在 HTTP 响应报文中,通过已建立的 TCP 连接,返回给请求该对象的浏览器。
image.png
在服务器存放用户信息
HTTP是无状态的,这样简化了服务器的设计,但在实际工作中,一些站点常常希望能够识别用户,或限制某些用户的访问。
万维网站点使用 Cookie 来跟踪用户。
Cookie 表示在 HTTP 服务器和客户之间传递的状态信息。
Cookie的工作过程:
- 当用户浏览某个使用Cookie的网站时,该网站的服务器就为用户产生一个唯一的识别码。利用此识别码,网站就能够跟踪用户在该网站的活动。
- 服务器不需要知道用户的姓名和其他信息,通过识别码就可以知道用户访问的网页及顺序,及用户已使用过的电子邮件地址、信用卡号码等信息。
- Cookie的使用涉及用户的隐私,如网站服务器将获取的用户信息卖给第三方,收集用户的网上行为等。
万维网的文档
要使任何一台计算机都能显示出任何一个万维网服务器上的页面,必须解决页面制作的标准化问题。
超文本标记语言HTML(HyperText Markup Language)是一种制作万维网页面的标准语言,消除了计算机之间信息交流的障碍。
HTML 定义了许多用于排版的命令(即标签)。
HTML 把各种标签嵌入到万维网的页面中。这样就构成了所谓的 HTML 文档。HTML 文档是一种可以用任何文本编辑器创建的 ASCII 码文件。
3、HTTPS
HTTPS(Hypertext Transfer Protocol over Secure Socket Layer)是HTTP的安全版。
默认使用TCP端口443
S 实际上是SSL协议。SSL是Netscape公司发明的一种用于Web的安全传输协议。能够加密数据防止数据中途被窃取;能维护数据的完整性,确保数据在传输过程中不被改变。
HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全 。
4、WebSocket
WebSocket协议是基于TCP的一种新的网络协议,是html5提出的一个协议规范 。它实现了浏览器与服务器全双工通信——允许服务器主动发送信息给客户端。其优点:
- 互相沟通的Header是很小的,大概只有 2 Bytes。
- 服务器的推送,服务器不再被动的接收到浏览器的请求之后才返回数据,而是在有新数据时就主动推送给浏览器。