一、TCP/IP模型
其实TCP/IP模型有自己的名字,叫做互联网协议套件(Internet Protocol Suite),但由于其中的TCP、IP协议往往是大家关注和讨论的重点,而且这个模型本身就是更关注于实际实现,所以大家都会习惯说TCP/IP模型,也叫TCP/IP协议族
与OSI模型不同,OSI模型是由ISO组织归纳并推广的,师出有处,名门正派,所以大家提到OSI模型的名字很容易就知道是那个七层模型
TCPIP模型分为四层,是目前网络在用的模型,起源于20世纪70年代美国国防部的研究计划,旨在实现若干台主机的相互通信,重点是解决不同网络之间的互联问题,以满足军事通信和数据交换的需求
而OSI是在TCPIP落地之后,由ISO组织才做了更加细致的理论归纳,在1984年发布,旨在为不同厂商的计算机和网络设备提供一个标准的通信模型,使他们之间能够相互通信,提高网络通信的互操作性和可靠性,更侧重于理论研究和标准化制定
由上至下,依次为应用层、传输层、网际层、网络接口层
二、网际层
网际层是TCP/IP协议体系中的特定概念,但并不是说在其他所有网络体系结构中都不存在类似功能的层级,只是名称和具体定义可能有所不同。以下是具体说明:
- **在TCP/IP体系中的情况**:在TCP/IP四层(五层)协议体系中,网际层是其中的第三层,其主要负责提供独立于硬件的逻辑寻址,让数据能够在具有不同物理结构的子网之间传递,实现物理寻址与逻辑寻址的转换等功能,其中最具代表性的协议就是IP协议 。在这个体系里,网际层的地位和作用非常关键,它将不同的网络连接在一起,使得互联网上的各个设备能够相互通信,比如将各种局域网、广域网通过路由器连接起来,实现数据包在不同网络间的路由和转发,像我们日常上网时,数据从我们的设备经过多个网络节点最终到达目标服务器,就是网际层在发挥作用。
- **与OSI参考模型的对比**:OSI参考模型中有网络层,它的功能与TCP/IP中的网际层有相似之处,都负责网络中的数据通信,将数据从源端经过若干个中间节点传送到目的端,但在具体的实现细节和所包含的协议等方面存在差异。例如,OSI网络层中的协议和技术可能更侧重于面向连接的通信方式,而TCP/IP的网际层则以无连接的IP协议为核心,采用数据报的方式进行通信。
- **在其他体系中的类似概念**:其他一些网络体系结构可能也有负责类似功能的层次,但名称和内涵可能不同。比如,一些早期的专用网络体系结构中,可能有专门负责不同网络之间互联和数据传输的部分,但其设计和实现是针对特定的网络环境和需求,与TCP/IP的网际层在通用性和广泛应用程度上无法相比。
三、各层涉及的协议
TCP/IP网络模型分为四层,各层涉及的协议如下:
### 应用层
- **简单邮件传输协议(SMTP)**:用于发送电子邮件。
- **远程登录协议(Telnet)**:用于远程连接,默认端口为23,但它是明文传输,安全性较差。
- **超文本传输协议(HTTP)**:万维网的基础,用于在不同系统上交换超文本,默认端口为80 。
- **文件传输协议(FTP)**:用于在两个主机之间共享或传输文件,默认端口为20、21。
以上四种依赖TCP协议
- **域名系统(DNS)**:将域名解析为对应的IP地址,基于UDP,使用端口号53 。
TFTP 文件传输
SNMP网络管理
NFS远程文件服务器
以上四种依赖UDP协议
- **动态主机配置协议(DHCP)**:用于自动分配IP地址等网络配置信息。
- **安全外壳协议(SSH)**:用于远程安全连接,加密传输数据,比Telnet更安全。
### 传输层
- **传输控制协议(TCP)**:可靠的、面向连接的协议,通过三次握手建立连接,四次挥手断开连接,能保证数据的可靠传输,但性能消耗相对较高。
- **用户数据报协议(UDP)**:不可靠的、无连接的协议,发送数据前不需要建立连接,数据传输效率高,但不能保证数据一定能准确无误地到达目的地。
### 网络层
- **网际协议(IP)**:负责在不同网络之间进行数据包的路由和转发,是TCP/IP协议族的核心协议之一。
- **网际控制报文协议(ICMP)**:用于在IP主机、路由器之间传递控制消息,如网络通不通、主机是否可达等,常用的Ping命令就是基于ICMP协议实现的。
- **地址解析协议(ARP)**:用于将IP地址解析为对应的MAC地址,以实现数据链路层的通信。
- **反向地址解析协议(RARP)**:与ARP相反,用于将MAC地址解析为对应的IP地址。
### 网络接口层
该层处理与物理网络的接口细节,包括数据链路层的功能,涉及到的协议与具体的网络接入技术和物理介质有关,例如:
- **以太网协议**:应用于有线局域网,规定了数据在以太网上的传输格式和访问控制方式等。
- **无线局域网协议(如IEEE 802.11系列协议)**:用于无线局域网环境,实现无线设备之间的通信。
- **点到点协议(PPP)**:常用于通过电话线或专线建立的点对点连接,如拨号上网等场景。
四、HTTP
HTTP请求报文格式
首行:请求报文的第一行是请求行,包含三个部分:请求方法、URL和HTTP版本号。例如,GET /index.html HTTP/1.1表示使用GET方法请求index.html页面,HTTP版本为1.1
请求头:紧随首行之后的是一系列的请求头,每个请求头都是一行,包含键值对。例如,Host: www.example.com表示请求的主机名。
空行:请求头之后是一个空行,表示请求头的结束
正文:某些请求方法(如POST)包含正文,正文的内容和格式根据请求方法的不同而变化。例如,POST方法通常用于提交数据
HTTP响应报文格式
首行:响应报文的第一行是状态行,包含三个部分:HTTP版本号、状态码和状态消息。例如,HTTP/1.1 200 OK表示请求成功
响应头:紧随状态行之后的是一系列的响应头,每个响应头都是一行,包含键值对。例如,Content-Type: text/html表示内容类型为HTML
空行:响应头之后是一个空行,表示响应头的结束
正文:随后是响应正文。正文的内容和格式根据请求的不同而变化
五、FTP
文件传输协议(File Transfer Protocol)FTP是一个用于在计算机网络上在客户端和服务器之间进行文件传输的应用层协议。
同大多数Internet服务一样,FTP也是一个客户/服务器系统(C/S系统)。用户通过一个客户端程序连接至在远程计算机上运行的服务器程序。
依照FTP协议提供服务,进行文件传送的计算机就是FTP服务器,而连接FTP服务器,遵循FTP协议与服务器传送文件的电脑就是FTP客户端。
用户要连上FTP 服务器,就要用到 FTP 的客户端软件,通常Windows系统自带“ftp”命令,这是一个命令行的FTP客户端程序,另外常用的FTP客户端程序还有FileZilla、 CuteFTP。
报文格式
在FTP协议中,FTP命令和FTP应答,是以ASCII码形式的明文传递。
FTP命令的一般报文格式是:命令 选项参数 \r\n
FTP应答的一般报文格式为:状态码 报文选项 \r\n
参考:https://blog.youkuaiyun.com/qq_39172059/article/details/136431468
六、TCP
三次握手、四次挥手
数据分片、到达确认、超时重传
滑动窗口、失序处理、重复处理、数据校验
报文格式略 可用wireshark抓取查看
面向连接、面向字节传输(数据分片)
七、UDP
无连接、面向报文传输(数据不分片)、不可靠
UDP是无连接的协议,也就是说,只要知道接收端的IP和端口,且网络是可达的,任何主机都可以向接收端发送数据。这时候,如果一次能读取超过一个报文的数据,则会乱套。比如,主机A向发送了报文P1,主机B发送了报文P2,如果能够读取超过一个报文的数据,那么就会将P1和P2的数据合并在了一起,这样的数据是没有意义的
参考:https://www.jianshu.com/p/c9f82491b63a
八、IP
IPV4、IPV6
参考:
https://blog.youkuaiyun.com/m0_72563041/article/details/135175003
https://www.cnblogs.com/Blogwjl/p/15746923.html
九、调试
HTTP、TCP、IP等等协议,都可以使用wireshark来监控解析,查看报文的含义