第一章
七层网络体系结构
分为七层的主要原因是为了支持异构网络的互联互通。
七层分别负责的内容
OSI模型把网络通信的工作分为七层,从下到上分别是:
层 | 任务 | 功能 | 传输单位 | 所实现的硬件 | 协议 |
---|---|---|---|---|---|
物理层 | 透明的传输比特流 | 为数据段设备提供传送数据通路 | 比特 | 集线器,中继器 | |
数据链路层 | 将网络层传输下来的IP数据组装成帧 | 1.链路连接的建立,拆除和分离 2.帧定界和帧同步 3.差错检测 |
帧 | 交换机,网桥 | PPP,HDLC,STP,ARQ |
网络层 | 1.将传输层传下来的报文段封装成分组 2.选择合适的路由,使得传输层传下来的分组能够交付到目的主机 |
1.为传输层提供服务 2.组包和拆包 3.路由选择 4.拥塞控制 |
数据段 | 路由器 | ICMP,ARP,RARP,IP,IGMP,OSPF |
传输层 | 负责主机中两个进程之间的通信 | 1.为端到端连接提供可靠的服务 2.为端到端连接提供流量控制、差错控制、服务质量等管理服务 |
报文段(TCP)或用户数据报(UDP) | TCP、UDP | |
会话层 | 不同主机上各进程间的对话 | 管理主机间的会话进程,包括建立、管理以及终止进程间的会话。是一种端到端的服务 | |||
表示层 | 负责处理在两个内部数据表示结构不同的通信系统之间交换信息的表示格式,为数据加密和解密以及为提高传输效率提供必需的数据压缩以及解压等功能。 | ||||
应用层 | 提供系统与用户的接口 | 1.文件传输 2.访问和管理 3.电子邮件服务 |
FTP、SMTP、POP3、HTTP、DNS、TELnet |
五层网络体系结构
五层网络体系结构分别是:应用层,运输层,网络层,数据链路层,物理层。
从上到下分别是:
层 | 功能 | 协议 |
---|---|---|
应用层 | 1.是体系结构中的最高。直接为用户的应用进程提供服务。 2.在因特网中的应用层协议很多,如支持万维网应用的HTTP协议,支持电子邮件的SMTP协议,支持文件传送的FTP协议等等。 |
|
运输层 | 1.负责向两个主机中进程之间的通信提供服务。由于一个主机可同时运行多个进程,因此运输层有复用和分用的功能。 2.复用,就是多个应用层进程可同时使用下面运输层的服务。 3.分用,就是把收到的信息分别交付给上面应用层中相应的进程。 |
1.传输控制协议TCP(Transmission Control Protocol):面向连接的,数据传输的单位是报文段,能够提供可靠的交付。 2.用户数据包协议UDP(User Datagram Protocol):无连接的,数据传输的单位是用户数据报,不保证提供可靠的交付,只能提供“尽最大努力交付”。 |
网络层 | 1.负责为分组交换网上的不同主机提供通信服务。在发送数据时,网络层把运输层残生的报文段或用户数据报封装成分组或包进行传送。在TCP/IP体系中,由于网络层使用IP协议,因此分组也叫做IP数据报,或简称为数据报。 2.选中合适的路由,使源主机运输层所传下来的分组,能够通过网络中的路由器找到目的主机。 |
路由协议有:RIP,OSPF |
数据链路层 | 1.在两个相邻结点之间传送数据时,数据链路层将网络层交下来的IP数据报组装成帧(framing),在两个相邻结点之间的链路上“透明”地传送帧中的数据。 2.每一帧包括数据和必要的控制信息(如同步信息、地址信息、差错控制等)。典型的帧长是几百字节到一千多字节。 |
|
物理层 | 在物理层上所传数据的单位是比特。物理层的任务就是透明地传送比特流。 |
HTTP
HTTP基本概念
HTTP(HyperText Transfer Protocol)超文本传输协议。
HTTP 是一个在计算机世界里专门在「两点」之间「传输」文字、图片、音频、视频等「超文本」数据的「约定和规范」。
可以将【超文本传输协议】拆分为三部分:
- 超文本
- 传输
- 协议
协议
HTTP是一个用在计算机世界里的协议,使用计算机能够理解的语言确立了一种计算机之间的交流通信的规范(两个以上的参与者),以及相关的各种控制和错误处理的方式(行为约定和规范)
传输
HTTP是一个在计算机世界里专门用来在两点之间传输数据的约定和规范。HTTP是一个双向协议
数据在A和B之间传输时,允许中间有中转或接力。但是中转或接力需要也遵从HTTP协议
超文本
HTTP 传输的内容是「超文本」(超越了普通文本的文本)。
HTTP常见的状态码
HTTP常见的字段
Host字段:客户端发送请求时,用来指定服务器的域名。有了Host字段,就可以将请求发往同一台服务器上的不同网站。
1
Host: www.A.com
Content-Type字段:用于服务器回应时,告诉客户端,本次数据是什么格式。
1
Content-Type: text/html; Charaset=utf-8
GET和POST
GET和POST的区别
- GET 的语义是从服务器获取指定的资源,这个资源可以是静态的文本、页面、图片视频等。
- POST 的语义是根据请求负荷(报文body)对指定的资源做出处理,具体的处理方式视资源类型而不同。
- GET 请求的参数位置一般是写在 URL 中,URL 规定只能支持 ASCII,所以 GET 请求的参数只允许 ASCII 字符 ,而且浏览器会对 URL 的长度有限制
- POST 请求携带数据的位置一般是写在报文 body 中,body 中的数据可以是任意格式的数据,只要客户端与服务端协商好即可,而且浏览器不会对 body 大小做限制。
GET和POST都是安全和幂等的吗
安全:在Http协议里,所谓的安全是指请求方法不会破坏服务器上的资源
幂等:多次执行相同的操作,结果都是「相同」的。
- GET 的语义是请求获取指定的资源。GET 方法是安全、幂等、可被缓存的。
- POST 的语义是根据请求负荷(报文主体)对指定的资源做出处理,具体的处理方式视资源类型而不同。POST 不安全,不幂等,(大部分实现)不可缓存。
注意, 上面是从 RFC 规范定义的语义来分析的。
实际过程中,开发者不一定按照RFC规范定义的语义来实现POST和GET方法。比如:
- 可以用 GET 方法实现新增或删除数据的请求,这样实现的 GET 方法自然就不是安全和幂等。
- 可以用 POST 方法实现查询数据的请求,这样实现的 POST 方法自然就是安全和幂等。
HTTP缓存技术
HTTP缓存有哪些实现方式
对于一些具有重复性的 HTTP 请求,比如每次请求得到的数据都一样的,我们可以把这对「请求-响应」的数据都缓存在本地,那么下次就直接读取本地的数据,不必在通过网络获取服务器的响应了,这样的话 HTTP/1.1 的性能肯定肉眼可见的提升。
HTTP缓存有两种实现方式:强制缓存和协商缓存