计算机网络分层
OSI网络七层结构
物理层
数据链路层
网络层
IP地址 = {<网络号>, <主机号>}
A类地址 : 0.0.0.0 ~ 127.0.0.0,由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”。
B类地址 : 128.0.0.0 ~ 191.255.0.0,由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”。
C类地址 : 192.0.0.0 ~ 223.255.255.0,由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是“110”。
其中,D类地址用于多点广播,还有E类地址留做后续使用。
划分子网及子网掩码
两级IP地址是由网络号加上主机号来组成,但是两级IP地址存在着缺陷,IP地址空间利用率有时很低,给每个物理网络分配一个网络号会使路由表变得太大因而降低网络性能,给每个物理网络分配一个网络号会使路由表变得太大因而降低网络性能,因此我们需要把网络划分成子网。
划分子网的方法:从网络的主机号划分若干位作为子网号使用,主机号减少相应的位数,三级IP= {<网络号>,<子网号>,<主机号>}
子网掩码(subnet mask)又叫网络掩码、地址掩码、子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。一般由一串1和一串0组成, 不管网络有没有划分子网, 将子网掩码和IP地址做按位与运算即可得出网络地址.
传输层
这一层,定义了一些传输数据的协议和端口号(WWW端口80等),如:TCP(传输控制协议,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据),UDP(用户数据报协议,与TCP特性恰恰相反,用于传输可靠性要求不高,数据量小的数据,如QQ聊天数据就是通过这种方式传输的)。 主要是将从下层接收的数据进行分段和传输,到达目的地址后再进行重组。常常把这一层数据叫做段,网关就是工作在这一层往上的。
这一层我们主要研究两种两种协议,TCP协议和UDP协议。
UDP协议特点:
- 无连接
- 尽最大努力交付
- 面向报文 : 应用层交下来的报文直接加上UDP头部就往IP层扔, 不合并也不拆分
- 没有拥塞控制
- 支持一对一, 一对多, 多对一和多对多的交互通信
- 首部开销小, 只有8个字节的
TCP协议特点:
- 面向连接的运输层协议
- 每一条TCP连接只能有2个端点, TCP是点对点的
- 提供可靠交付
- 全双工通信
- 面向字节流
我们把ip地址加上端口号就叫做socket套接字,我们可以基于套接字来进行编程,实现主机之间的通信。
应用层
是最靠近用户的OSI层。这一层为用户的应用程序(例如电子邮件、文件传输和终端仿真)提供网络服务。应用层协议最著名的就是HTTP, FTP了, 还有一个重要的DNS。
DNS(Domain Name System)能将域名(www.baidu.com)解析成ip地址。域名服务器的分类:
- 根域名服务器 : 最高层次的域名服务器
- 顶级域名服务器 : 如其名
- 权限域名服务器 : 负责一个区的应服务器
- 本地域名服务器 : 主机发送DNS查询请求就是发给它
URL
URL的格式 : <协议>://<主机>:<端口>/<路径>
, 端口和路径有时可省略.
使用HTTP协议的URL : http://<主机>:<端口>/<路径>
, HTTP默认端口号是80。
HTTP协议
HTTP是面向事务的, 即它传输的数据是一个整体, 要么全部收到, 要么全部收不到.
每一次HTTP请求就需要建立一次TCP连接和释放TCP连接.
HTTP是无连接, 无状态的. 每一次请求都是作为一次新请求.
HTTP/1.0 缺点 : 无连接, 每一次请求都要重新建立TCP连接, 所以每一次HTTP请求都要花费2倍RTT时间(一次TCP请求, 一次HTTP请求)
HTTP/1.1 : 使用持续连接, 即保持TCP连接一段时间.