1 网络基础知识
1.1 OSI七层参考模型
全称:开放系统互连参考模型(Open System Interconnection Reference Model,OSI/RM)
补充:为什么要有一个个层:
物理层:010101比特流,设备之间原始数据的传输,数模转换(发送端)和模数转换(接收端)
-》传输过程可能出现错码和误码?-------又问题,引入下一层:数据链路层
数据链路层:将原始比特流转换成逻辑传输符号,提供纠错编码,格式变为帧
-》出现多个网络节点,应该选择哪个节点?
网络层:通过路由选择,选择最佳路径,数据格式是IP数据包
-》某次连接传输的数据可能很大,会出现错传、漏传
传输层:将数据拆分成段,提供维护连接的机制(流量控制、拥塞控制)
-》对用户来说每次都要使用传输层拆分,再使用网络层寻路很麻烦
会话层:提供建立连接和维护连接的机制,方便用户使用
-》不同操作系统之间的网络传输如何互通?linux/windows
表示层:提供编码转换、加解密、解压缩
-》接收方不知道发送发发送的是什么东西、数据有多长?
应用层:规定发送方和接收方必须使用固定长度的消息头,并且消息头固定格式,并标明长度等信息。
1.物理层
设备之间原始数据的传输,数据格式:比特流。
2.数据链路层
原始比特流转换成逻辑传输数据,建立相邻结点之间的数据链路,mac地址寻址,数据格式:帧
3.网络层
将数据链路层提供的帧组成数据包,通过路由算法提供最佳传输路径,数据格式:IP数据包
数据链路层解决同一网络节点间的传输,网络层解决不同子网间的传输。(IP是网络层)
4.传输层
数据格式:也称作数据包(packets)(TCP的数据单元称为段(segments)UDP的数据单元称为数据报(datagrams))
拆分数据包,提供端对端不同主机用户进程数据传输,提供可靠或不可靠传输及流量控制,是连接通信子网和资源子网的桥梁。
5.会话层
不参与具体的传输,提供建立和维护应用间通信的机制。
6.表示层
数据的表示方式(格式处理及编码转换)和特定功能(加解密,解压缩)的实现
7.应用层
为用户提供服务,为操作系统或者应用程序提供访问网络的的接口
应用层协议的代表包括:Telnet、FTP、HTTP、SNMP等
1.2 TCP/IP四层结构
1.链路层:
包括物理层和数据链路层,是通过MAC地址传输数据的
2.网络层:
包括多种协议
IP协议:通过路由选择将数据封装后交给链路层。
ICMP协议(Internet Control Message Protocol):用于主机和路由器直接传递控制消息,常用的ping就是用这个协议。
ARP协议(Address Resolution Protocol):是正向地址解析协议,通过IP查找mac地址。
RARP协议:是反向地址解析协议,通过mac地址查找IP。
3.传输层
TCP协议:传输控制协议,是面向连接的、可靠的、基于IP的传输层协议
UDP协议:用户数据报协议,提供面向事物的、简单、不可靠的信息传输协议
4.应用层
FTP协议:文件传输协议,用于文件的上传下载。
Telnet协议:用户远程登录服务。
DNS(Domain Name System)协议:域名解析协议,提供域名到IP的解析。
SMTP(Simple Mail Transfer Protocol)协议:简单的邮件传送协议,用于控制信件的发送中转。
NFS协议:网络文件系统,用于不同主机间文件共享。
HTTP协议:超文本传输协议,用于实现互联网访问功能。
1.3 OSI七层协议和TCP/IP协议之间的关系
链路层 | 物理层 数据链路层 |
网络层 | 网络层 |
传输层 | 传输层 |
应用层 | 会话层 表示层 应用层 |
- OSI更注重通信模块必要的功能是什么
- TCP/IP更注重实现协议应该开发哪种程序
2. TCP的三次握手和四次挥手
2.1 TCP报文头结构定义
其中:
seq是32位序号,ack是32位确认序号
- URG:紧急指针标志
- ACK:确认序号标志
- PSH:push标志
- RST:重置连接标志
- SYN:同步序号,用于建立连接过程
- FIN:finsh标志,用于释放连接
2.2 TCP三次握手
初始时,服务器端处于LISTEN监听状态
第一次握手:客户端发送SYN包到服务器(SYN标志位为1,seq=x)并进入SYN-SENT状态,等待服务器确认;
第二次握手:服务端确认客户端的SYN包(ACK标志位为1,ack=x+1),同时自己也发送一个SYN包(SYN标志位为1,seq=