OSI七层网络模型:开放式系统互联参考模型;
7层:应用层;
6层:会话层
5层:表示层
4层:传输层
3层:网络层
2层:数据链路层
1层:物理层
TCP/IP四层模型:每一层都呼叫它的下一层所提供的网络来完成自己的需求;(是一组协议的代名词)
应用层;
传输层;
网络层;
数据链路层;
数据包封装和分用:
-
不同的协议层对数据包有不同称呼;
在传输层的数据包称为:数据段; 在网络层的数据包称为:数据报(datagram); 在链路层的数据包称为:帧(frame);
-
封装:应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部;
IP地址
IP地址有两个版本,IPv4和IPv6;默认是IPv4;
- IP地址是在IP协议中,用来标识网络中不同主机的地址;
- 对于IPv4,IP地址是一个4个字节(32位)的整数;
- 通常采用“点分十进制”的字符串表示IP地址;
MAC地址:
- MAC地址用来识别数据链路层中相连的节点;
- 长度是6个字节(48位),一般采用16进制数字加上冒号的形式表示;
- 在网卡出厂时就确定了,不能修改;MAC地址通常是唯一的;
应用层协议:
-
HTTP协议:超文本传输协议;
-
URL:网址
http:// user:pass@ www.example.jp: 80 /dir/index.htm? uid=1 #ch1 协议名称 登陆信息 服务器地址 服务器端口号 文件路径 查询字符串 片段标识符(页码)
HTTP协议的格式:
-
HTTP请求;
1. 首行:【方法】+【URL】+【版本】; 2. 请求中,每组属性之间使用\n分割;遇到空行表示请求部分结束;空行有效分离; 3. 正文(Body):空行后面的内容都是正文;正文允许空字符串;
-
HTTP的加密在传输层与应用层之间;
-
HTTPS:(内容只能是发送方的应用层与接收方的应用层可以看到)
-
HTTP响应:响应报文,响应空行,响应正文
-
目前我们的HTTP传输分为两类:短链接、长链接;
短链接的特点:简单; 长链接的特点:高效; 短链接:HTTP1.0协议 HTTP1.1(目前所用):长链接
-
重定向location分为:永久重定向和临时性重定向(302,301,307);
-
HTTP的常用状态码:
3XX(重定向状态码)【302】 4XX(客户端错误状态码)【404】 5XX(服务器错误状态码)【504】
-
HTTP常见的请求属性:
Content-Type:数据类型; Content-Length:Body的长度; Host:客户端告知服务器,所请求的资源是在哪个主机的哪个端口; user-Agent:声明用户的操作系统和浏览器版本信息; referer:告知当前页面是从哪个页面跳转过来的; location(重定向):搭配3XX状态码使用,告知客户端接下来要去哪里访问; Cookie:用于在客户端存储少量信息,通常存放账号以及密码;
-
HTTP服务器一般使用80端口;
传输层:
- 负责数据能够从发送端传输到接收端;
- 端口号:用来标识特定主机上的唯一一个进程;(从传输层向应用层的捆绑)
- 在TCP/IP协议中,用“源IP”,“源端口号”,“目的IP”,“目的端口号”,“协议号”这样的五元组来标识一个通信(可以通过netstat-n查看);
- IP+端口号=套接字;
- 端口号由2个字节(16位)65535;
端口号范围划分:0-1023,知名端口号;
1024-65535,操作系统动态分配(随机) - 固定端口号:
ssh服务器:22;
ftp服务器:21端口;
telnet服务器:23;
http服务器:80;
https服务器:443
mysql(数据库)默认:3306
一个进程可以绑定多个端口号,但是一个端口号不可以被多个进程绑定;
netstat:用来查看网络状态的工具;
常用选项:
n:拒绝显示别名,能显示数字的全部转化为数字;
l:仅列出有在监听的服务状态;
p:显示建立相关链接的程序名;
t:(tcp)仅显示tcp相关选项;
u:(udp)仅显示udp相关选项;
a:显示所有选项;
查看网络进程命令:ps
pidof:查找进程的id:通过进程名,查看进程id;
UDP协议:
-
16位UDP长度,表示整个数据报(UDP首部+UDP数据)的最大长度;
-
共8个字节,有:16位源端口号、16位目的端口号、16位UDP长度、16位UDP检验;
-
传输层中UDP和TCP协议中TCP协议会监听,而UDP协议不会;
-
UDP如何进行传输数据 向下交付(网络层)添加报头;
向上交付(应用层)读走前8个字节(64位),后面的是核心;【有效分离报头】
根据目的端口号进行有效分离 -
UDP的特点:
无连接;不需要建立连接, 不可靠:没有确认机制,也没有重传机制; 面向数据报:不可灵活的控制读写数据的次数;