应用层
- 每个应用层协议都是为了解决某一类应用问题,而问题的解决又往往是通过位于不同主机中的多个应用进程之间的通信和协同工作来完成的。应用层的具体内容就是规定应用进程在通信时所遵循的协议。
- 应用层的许多协议都是基于客户服务器方式。客户(client)和服务器(server)都是指通信中所涉及的两个应用进程。客户服务器方式所描述的是进程之间服务和被服务的关系。客户是服务请求方,服务器是服务提供方。
DNS
域名的结构由标号序列组成,各标号之间用点隔开:
- 域名服务器
文件传输协议 FTP
- 简单文件传送协议 TFTP
- FTP 提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。
- FTP 屏蔽了各计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件。
万维网WWW
- 万维网是分布式超媒体 (hypermedia) 系统,它是超文本 (hypertext) 系统的扩充。
- 超媒体与超文本的区别是文档内容不同。超文本文档仅包含文本信息,而超媒体文档还包含其他表示方式的信息,如图形、图像、声音、动画,甚至活动视频图像
- 客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档。在一个客户程序主窗口上显示出的万维网文档称为页面 (page)。
统一资源定位符 URL
超文本传送协议 HTTP
HTTP 有两类报文:
- 请求报文——从客户向服务器发送请求报文。
-
响应报文——从服务器到客户的回答。
由于 HTTP 是面向正文的 (text-oriented),因此在报文中的每一个字段都是一些 ASCII 码串,因而每个字段的长度都是不确定的。
| 方法(操作) | 意义 |
|---|---|
| OPTION | 请求一些选项的信息 |
| GET | 请求读取由 URL所标志的信息 |
| HEAD | 请求读取由 URL所标志的信息的首部 |
| POST | 给服务器添加信息(例如,注释) |
| PUT | 在指明的 URL下存储一个文档 |
| DELETE | 删除指明的 URL所标志的资源 |
| TRACE | 用来进行环回测试的请求报文 |
| CONNECT | 用于代理服务器 |
| 状态码 | 含义 |
|---|---|
| 1xx | 表示通知信息的,如请求收到了或正在进行处理。 |
| 2xx | 表示成功,如接受或知道了。 |
| 3xx | 表示重定向,表示要完成请求还必须采取进一步的行动。 |
| 4xx | 表示客户的差错,如请求中有错误的语法或不能完成。 |
| 5xx | 表示服务器的差错,如服务器失效无法完成请求。 |
-
Cookie
万维网站点使用 Cookie 来跟踪用户。
Cookie 表示在 HTTP 服务器和客户之间传递的状态信息。
使用 Cookie 的网站服务器为用户产生一个唯一的识别码。利用此识别码,网站就能够跟踪该用户在该网站的活动。
相关的程序设计语言(HTML, XML,XHTML,CSS…)
- 超文本标记语言 HTML
- XML:XML (Extensible Markup Language)是可扩展标记语言,它和HTML很相似。
但XML的设计宗旨是传输数据,而不是显示数据(HTML是为了在浏览器上显示数据) - XHTML (Extensible HTML) 是可扩展超文本标记语言,它与 HTML 4.01 几乎是相同的。
但 XHTML 是更严格的 HTML 版本,也是一个 W3C 标准(2000年1月),是作为一种 XML 应用被重新定义的 HTML,并将逐渐取代 HTML。 - CSS (Cascading Style Sheets) 是层叠样式表,它是一种样式表语言,用于为 HTML 文档定义布局。
动态万维网文档,CGI
-
静态文档是指该文档创作完毕后就存放在万维网服务器中,在被用户浏览的过程中,内容不会改变。
-
动态文档是指文档的内容是在浏览器访问万维网服务器时才由应用程序动态创建。
-
CGI (Common Gateway Interface) 是一种标准,它定义了动态文档应如何创建,输入数据应如何提供给应用程序,以及输出结果应如何使用。
万维网服务器与 CGI 的通信遵循 CGI 标准。
“通用”:CGI 标准所定义的规则对其他任何语言都是通用的。
“网关”:CGI 程序的作用像网关。
“接口”:有一些已定义好的变量和调用等可供其他 CGI 程序使用 -
CGI 程序的正式名字是 CGI 脚本 (script)。
“脚本”指的是一个程序,它被另一个程序(解释程序)而不是计算机的处理机来解释或执行。
代理服务器
- 代理服务器 (proxy server) 又称为万维网高速缓存 (Web cache),它代表浏览器发出 HTTP 请求。
- 万维网高速缓存把最近的一些请求和响应暂存在本地磁盘中。
- 当与暂时存放的请求相同的新请求到达时,万维网高速缓存就把暂存的响应发送出去,而不需要按 URL 的地址再去互联网访问该资源。
万维网的文档
电子邮件
- 发送邮件的协议:SMTP
- 读取邮件的协议:POP3 和 IMAP
- MIME 在其邮件首部中说明了邮件的数据类型(如文本、声音、图像、视像等),使用 MIME 可在邮件中同时传送多种类型的数据。
简单邮件传送协议 SMTP
SMTP 所规定的就是在两个相互通信的 SMTP 进程之间应如何交换信息。
由于 SMTP 使用客户服务器方式,因此负责发送邮件的 SMTP 进程就是 SMTP 客户,而负责接收邮件的 SMTP 进程就是 SMTP 服务器。
- SMTP 有以下缺点:
- SMTP 不能传送可执行文件或其他的二进制对象。
- SMTP 限于传送 7 位的 ASCII 码。许多其他非英语国家的文字(如中文、俄文,甚至带重音符号的法文或德文)就无法传送。
POP3
邮局协议 POP 是一个非常简单、但功能有限的邮件读取协议,现在使用的是它的第三个版本 POP3。
POP 也使用客户-服务器的工作方式。
IMAP 协议(Internet Message Access Protocol)
用户在自己的 PC 机上就可以操纵 ISP 的邮件服务器的邮箱,就像在本地操纵一样。
因此 IMAP 是一个联机协议。当用户 PC 机上的 IMAP 客户程序打开 IMAP 服务器的邮箱时,用户就可看到邮件的首部。若用户需要打开某个邮件,则该邮件才传到用户的计算机上。
MIME
MIME 增加 5 个新的邮件首部
- MIME-Version:标志 MIME 的版本。现在的版本号是 1.0。若无此行,则为英文文本。
- Content-Description:这是可读字符串,说明此邮件是什么。和邮件的主题差不多。
- Content-Id:邮件的唯一标识符。
- Content-Transfer-Encoding:在传送时邮件的主体是如何编码的。base64等
- Content-Type:说明邮件的性质。 如 image/git
MIME Content-Type 说明中的类型及子类型
| 内容类型 | 子类型举例 | 说明 |
|---|---|---|
| text(文本) | plain, html, xml, css | 不同格式的文本 |
| image(图像) | gif, jpeg, tiff | 不同格式的静止图像 |
| audio(音频) | basic, mpeg, mp4 | 可听见的声音 |
| video(视频) | mpeg, mp4, quicktime | 不同格式的影片 |
| model(模型) | vrml | 3D模型 |
| application(应用) | octet-stream, pdf, javascript, zip | 不同应用程序产生的数据 |
| message(报文) | http, rfc822 | 封装的报文 |
| multipart(多部分) | mixed, alternative, parallel, digest | 多种类型的组合 |
动态主机配置协议 DHCP
系统调用与套接字描述符
系统调用接口实际上就是应用进程的控制权和操作系统的控制权进行转换的一个接口,即应用编程接口 API (Application Programming Interface)
- 当应用进程需要使用网络进行通信时就发出系统调用,请求操作系统为其创建“套接字”,以便把网络通信所需要的系统资源分配给该应用进程。
- 操作系统为这些资源的总和用一个叫做套接字描述符的号码来表示,并把此号码返回给应用进程。应用进程所进行的网络操作都必须使用这个号码。
- 通信完毕后,应用进程通过一个关闭套接字的系统调用通知操作系统回收与该“号码”相关的所有资源。
传输层
- 传输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。
- 从传输层的角度看,通信的真正端点并不是主机而是主机中的进程。也就是说,端到端的通信是应用进程之间的通信。
- 根据应用程序的不同需求,传输层需要有两种不同的传输协议,即面向连接的 TCP 和无连接的 UDP 。
端口
传输层使用协议端口号 (protocol port number),或通常简称为端口 (port)。这是一种软件端口。
虽然通信的终点是应用进程,但我们可以把端口想象是通信的终点,因为我们只要把要传送的报文交到目的主机的某一个合适的目的端口,剩下的工作(即最后交付目的进程)就由 TCP /UDP来完成。
根据服务端/客户端,将端口分为两大类:
- 服务器端使用的端口号
- 熟知端口,数值一般为 0~1023。
- 登记端口号,数值为 1024~49151,为没有熟知端口号的应用程序使用的。使用这个范围的端口号必须在 IANA 登记,以防止重复。
- 客户端使用的端口号
- 又称为短暂端口号,数值为 49152~65535,留给客户进程选择暂时使用。
- 当服务器进程收到客户进程的报文时,就知道了客户进程所使用的动态端口号。通信结束后,这个端口号可供其他客户进程以后使用。
UDP
- UDP 只在 IP 的数据报服务之上增加了很少一点的功能:
- 复用和分用的功能
- 差错检测的功能
- UDP 是面向报文的。UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。UDP 一次交付一个完整的报文。
UDP 是无连接的,发送数据之前不需要建立连接,,因此减少了开销和发送数据之前的时延。 - UDP 使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表。
- UDP 的首部开销小,只有 8 个字节,比 TCP 的 20 个字节的首部要短。
- UDP 没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的。很适合多媒体通信的要求。
TCP
- TCP 是面向连接的传输层协议。
- 每一条 TCP 连接只能有两个端点 (endpoint),每一条 TCP 连接只能是一对一的。
- TCP 提供可靠交付的服务。
- TCP 提供全双工通信。
- 面向字节流
- TCP 中的“流”(stream)指的是流入或流出进程的字节序列。
“面向字节流”的含义是:虽然应用程序和 TCP 的交互是一次一个数据块,但 TCP 把应用程序交下来的数据看成仅仅是一连串无结构的字节流。
- TCP 中的“流”(stream)指的是流入或流出进程的字节序列。
- TCP 连接的端点叫做套接字 (socket) 或插口。
端口号拼接到 (contatenated with) IP 地址即构成了套接字。
每一条 TCP 连接唯一地被通信两端的两个端点(即两个套接字)所确定。即:
网络层
网际协议IP
网际协议 IP 是 TCP/IP 体系中两个最主要的协议之一。
与 IP 协议配套使用的还有三个协议:
- 地址解析协议 ARP (Address Resolution Protocol)
- 网际控制报文协议 ICMP (Internet Control Message Protocol)
- 网际组管理协议 IGMP (Internet Group Management Protocol)
ARP
已经知道了一个机器(主机或路由器)的IP地址,如何找出其相应的硬件地址?
地址解析协议 ARP 就是用来解决这样的问题的。
- 当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时,就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。
- 如有,就可查出其对应的硬件地址,再将此硬件地址写入 MAC 帧,然后通过局域网将该 MAC 帧发往此硬件地址。
- 如没有, ARP 进程在本局域网上广播发送一个 ARP 请求分组。收到 ARP 响应分组后,将得到的 IP 地址到硬件地址的映射写入 ARP 高速缓存。
子网与子网掩码
- 当没有划分子网时,IP 地址是两级结构。
- 划分子网后 IP 地址就变成了三级结构。
- 划分子网只是把 IP 地址的主机号 host-id 这部分进行再划分,而不改变 IP 地址原来的网络号 net-id。
子网掩码就是把网络号和子网号部分取1,主机号部分取0
无分类编址 CIDR
- CIDR 消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,因而可以更加有效地分配 IPv4 的地址空间。
- CIDR使用各种长度的“网络前缀”(network-prefix)来代替分类地址中的网络号和子网号。
- IP 地址从三级编址(使用子网掩码)又回到了两级编址
- CIDR 使用“斜线记法”(slash notation),它又称为 CIDR 记法,即在 IP 地址面加上一个斜线“/”,然后写上网络前缀所占的位数(这个数值对应于三级编址中子网掩码中 1 的个数)。例如: 220.78.168.0/24
网际控制报文协议 ICMP
- ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。
- 但 ICMP 不是高层协议(看起来好像是高层协议,因为 ICMP 报文是装在 IP 数据报中,作为其中的数据部分),而是 IP 层的协议。
- ICMP 报文的种类有两种,即 ICMP 差错报告报文和 ICMP 询问报文。
- ICMP 报文的前 4 个字节是统一的格式,共有三个字段:即类型、代码和检验和。接着的 4 个字节的内容与 ICMP 的类型有关。
ICMP应用(Ping,tracert)
- PING 和tracert 是应用层直接使用网络层 ICMP 的例子,它没有通过运输层的 TCP 或UDP。
- PING : 测试网络的连通性
- tracert:用来跟踪一个分组从源点到终点的路径, Linux上的命令为traceroute
路由选择协议(RIP, OSPF, BGP)
自治系统 AS 的定义:在单一的技术管理下的一组路由器,而这些路由器使用一种 AS 内部的路由选择协议和共同的度量以确定分组在该 AS 内的路由,同时还使用一种 AS 之间的路由选择协议用以确定分组在 AS之间的路由。
- 内部网关协议 IGP (Interior Gateway Protocol) :在一个自治系统内部使用的路由选择协议。如RIP,OSPF.
- 外部网关协议 EGP (External Gateway Protocol) ,如BGP.
若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是外部网关协议 EGP。![]()
IPV6
IPV6所引进的主要变化如下:
- 更大的地址空间。IPv6 将地址从 IPv4 的 32 位 增大到了 128 位。
- 扩展的地址层次结构。
- 灵活的首部格式。 IPv6 定义了许多可选的扩展首部。
- 改进的选项。 IPv6 允许数据报包含有选项的控制信息,其选项放在有效载荷中。
- IPv6 使用冒号十六进制记法(colon hexadecimal notation, 简写为 colon hex)。
每个 16 位的值用十六进制值表示,各值之间用冒号分隔。例如:
68E6:8C64:FFFF:FFFF:0:1180:960A:FFFF - 冒号十六进制记法可以允许零压缩 (zero compression),即一连串连续的零可以为一对冒号所取代。
FF05:0:0:0:0:0:0:B3 可压缩为:
FF05::B3 - 冒号十六进制记法可结合使用点分十进制记法的后缀,这种结合在 IPv4 向 IPv6 的转换阶段特别有用。
例如:0:0:0:0:0:0:128.10.2.1
再使用零压缩即可得出: ::128.10.2.1
数据链路层
数据链路层使用的信道主要有以下两类类型:
- 点对点信道
- 广播信道
PPP 协议(Point-to-Point Protocol)
提供的是不可靠的数据报服务
CSMA/CD
全称:Carrier Sense Multiple Access with Collision Detection
特点是多点接入、载波监听、碰撞检测。提供的是不可靠交付。
MAC 层的硬件地址
- 在局域网中,硬件地址又称为物理地址,或 MAC 地址
- IEEE 802 标准规定 MAC 地址字段可采用 6 字节 ( 48位) 或 2 字节 ( 16 位) 这两种中的一种
- 地址字段 6 个字节中的后三个字节 (即低位 24 位) 由厂家自行指派,称为扩展唯一标识符,必须保证生产出的适配器没有重复地址。
MAC 帧格式
常用的以太网 MAC 帧格式有两种标准 :
- DIX Ethernet V2 标准
- IEEE 的 802.3 标准
以太网 V2 的格式:
在帧的前面插入(硬件生成)的 8 字节中,第一个字段共 7 个字节,是前同步码,用来迅速实现 MAC 帧的比特同步。第二个字段 1 个字节是帧开始定界符,表示后面的信息就是 MAC 帧。
物理层
物理层的研究重点是怎样在连接各种计算机的传输媒体上传送数据比特流
信道的基本概念
1. 信息传送的方向
- 单工通信
- 半双工通信
- 全双工通信
- 传输速率
码元:信道的一个状态。一个码元有几种可能的状态,如果状态数是 8,则一个码元可以编码成3bit的数据。
- 数据传输率S:每秒传输的二进制位数
- 波特率B:也叫码元传输速率、调制速率
N是1个码元可能的状态数
信道的极限容量
1. 香农公式
信息的极限传输速率 C 可表示为
- W为信号的带宽(Hz为单位)
- S/N为信道的信噪比(信道内所传信号的评价功率比上信道内部的高斯噪声功率)
信道复用
- 频分复用(FDM Frequency Division Multiplexing)
- 时分复用(TDM)
- 波分复用(WDM)就是光的频分复用
- 码分复用(CDM)。 使用正交编码的码片
- 正交频分多路复用(OFDM)
数据编码
-
曼彻斯特编码和差分曼彻斯特编码
-
曼彻斯特编码
一个比特时间一分为二。 比特时间内 , 发生低电平到高电平的变化表示“1”
高电平到低电平的变化表示“0” -
差分曼彻斯特编码
一个比特时间一分为二,比特时间中部发生电平变化,表示的值依赖于前一比特的最终电平状态。- 当前比特的前半部分电平不同于前一比特的最终电平状态(即位间电平发生变化),表示“0”
- 当前比特的前半部分电平相同于前一比特的最终电平状态(即位间电平不发生变化),表示“1”
循环冗余校验
- 编码思想:
将位串看成系数为0或1的多项式。 - 检错思想:
- 收发双方约定一个生成多项式G(x)(其最高阶和最低阶系数必须为1);
- 发送方在帧的末尾加上校验和,使带校验和的帧的多项式能被G(x)整除;
- 接收方收到后,用G(x)除多项式,若有余数,则传输有错。