TCP/IP四层网络模型
TCP/IP四层模型介绍
TCP/IP协议模型是一个四层体系结构
它包含应用层、传输层、网络层和网络接口层
我们将TCP/IP模型与OSI模型对比(OSI开放式系统互连)
应用层
应用层包含了各种不同的协议,这些协议定义了应用程序如何通过网络通信
应用层的功能
网络通信
-
应用层是网络通信的最终目的,它负责接收来自其他主机的数据,并将其传递给用户进程
-
同时,应用层也负责将用户进程产生的数据封装为应用层协议格式,然后通过网络发送给目标主机
数据封装与解封装
-
在发送数据时,应用会将数据数据封装成特定的应用层协议格式,包括 添加必要的头部信息(协议标识符、源地址、目标地址等)
-
在接收数据时应用层会解析收到的数据包、提取用户数据,并将其传递给相应的用户进程
协议转换
-
应用层包含多种协议,如HTTP、FTP、SMTP等,这些协议主要定义了不同应用程序之间的通信方式
-
应用层负责在不同的协议之间进行转换,以确保数据能够在不同的应用程序之间正确传输
流量控制
-
应用层还负责实现流量控制机制,限制数据传输的速率,防止网络拥塞
-
这通常通过应用层协议中的窗口大小、重传机制等参数来实现
应用层的常用协议
HTTP
HTTP协议即超文本传输协议,(超文本是用超链接的方法,将不同空间的文字信息组值在一起的网状文本),是一种使用万维网(WWW)服务器传输超文本到本地浏览器的传输协议
主要用于分布式超媒体信息系统,通过请求相应的方式实现客户端与服务器之间的通信和数据传输
FTP
FTP协议基于客户端-服务器模型工作,客户端向服务器请求,服务器响应这些请求,并在必要时向客户端发送数据。FTP使用两个TCP连接,一个用于控制命令的传输(控制连接),一个用于实际文本的传输(数据连接)
-
控制连接:在FTP绘画开始时建立,用于传输FTP命令和响应。客户端通过控制连接向服务器发送命令,服务器通过控制连接向客户端发送响应
-
数据连接:在需要传输文件时建立,用于传输文件数据;
SFTP
是基于SSH(远程连接工具)协议的文件传输协议,它用在在不安全的网络中安全的传输文件。SFTP结合SSH的安全加密和认证机制,使得文件传输过程能够抵御各种网络攻击
DNS
DNS协议是互联网的核心技术之一,它作为一个分布式数据库系统,负责将人类刻度的域名转换为计算机课识别的IP地址,从而使用户能够方便的访问互联网资源,而无需记住复杂的IP地址。DNS协议的主要功能是域名解析,将域名映射为对应的IP地址,这个过程也被称为主机名解析
传输层
向上层应用层提供服务,提供处于网络连接中的两台计算机之间的数据传输,属于面向通信的最高层,同时也是用户功能钟得最底层
传输层为相互通信的应用进程提供了逻辑通信(两台主机之间的通信其实是两台主机中的应用进程之间的通信)
在传输层有两个性质不同的协议:TCP(传输控制协议)、UDP(用户数据协议)
TCP/UDP
TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议
UDP是一种无连接的、不可靠的、面向数据报的传输层通信协议
TCP和UDP有以下特点:
-
TCP是有连接的,UDP是无连接的
-
TCP是可靠的,UDP是不可靠的
-
TCP是数据传输字节流,UDP是面向数据报
-
TCP、UDP都是全双工
有连接VS无连接
连接是一种抽象的概念,指客户端和服务器在进行数据通信前需要保存对端的关键信息(IP地址、端口号等)并且依赖保存的信息来发送/接收数据
TCP想要通信序先建立连接,只有连接完成后才能完成后续的通信
UDP无需经过对方的同意就可以直接发送数据,并且不会保存对方的消息。客户端/服务器每次发送数据时都需指定IP和端口号才能完全数据的传输
可靠传输vs不可靠传输
在复杂的网络环境下,数据传输可能存在丢包的情况,这可能会导致得到的信息不能正确解析;
面对这种情况,TCP会将丢失的数据包重新传输来保证通信双方尽量得到正确的数据,原因是TCP内部提供了一些操作来保证这种可靠传输
而UDP则没有这种可靠传输机制,如果数据包在网络传输中丢失了,UDP也不知道,因此不会重传
面对字节流vs面对数据报
TCP与文件操作一样,都是以字节为单位进行数据传输。所有的数据都被视为一连串的字节流,在传输时会被分割成若干大小和时的数据段,到达后在按照顺序被重新组装成完整的字节流
由于数据以一连串字节流的形式存在,因此在写入或读取时没有严格要求的对应关系,即数据读取时可根据需要读取任意字节数的数据
UDP是面向数据报传输数据,所有的数据都被视为一个个的数据报,其中每个UDP数据包都包含了完整的数据以及源/目的的端口IP等信息,因此数据在写入/读取时以单个数据报为单位
TCP/UDP都是全双工
全双工即通信双方既可以发数据,也可以收数据,且发送与接收可以同时进行,不需要等待对方完成操作
UDP协议
UDP报文格式
-
源/目的端口号:用于绑定通信双方主机上的进程,表示数据从哪个进程发出,由哪个进程接收
-
UDP报文长度:UDP报文大小+UDP载荷大小,用来表示一个UDP数据包最大可以携带的数据范围,最大为2^16 = 64kb,单位为字节。当传输的数据大于报文长度,会自动进行分片和重组
-
UDP校验和:将UDP负载中的数据通过一定的计算方式得到的16位数据,用于检测UDP头部和数据部分传输过程中是否发生错误
-
为什么校验和?
数据在网络传输中,由于受到某些外部因素干扰,可能出现信号反转,导致数据传输发生错误 -
如何通过校验和判断数据是否出错?
先将数据在发送前进行校验和的计算,并将校验和与数据等信息一起发送出去;但数据被接收后,接收方进行校验和的计算,然后将得到的校验和与数据包中的校验和进行比较,若比较的结果不一致,则说明数据在传输过程中大概率出错了
-
UDP的使用场景
UDP适合于对高速传输和实时性要求较高、对稳定性和可靠性要求不高、可以容忍少数数据丢失的场景,如音频传输、广播等
TCP协议
TCP报文格式
TCP首部的**大小是固定的20字节:**源端口号2字节、目的端口号2字节、序列号4字节、确认序列号4字节、4位首部长度1字节,6位保留位1字节,6位控制位1字节、窗口大小2字节、校验和2字节、紧急指针2字节、选项(0-40字节)
-
源/目的端口号(各2字节):这里的端口号与UDP报文中的端口号作用一样,都用于定位发送与接受的主机的进程
-
32位序列号(4字节):范围是0-2^32-1,当序列号超过最大值时置0,序列号用于标识此次发送数据的顺序,它的值为该报文段中数据部分的第一个字节的序号
- 确认序列号(4字节):确定序列号的值为某个TCP数据包中的序列号+数据的字节数,用于确认接收的数据:表示在该值之前的所有数据都已经被正确接收到,并期待下一次发送的数据为确认序列号之后的数据
-
首部长度(4位1字节):也可以称为“数据偏移”,用于确认TCP首部长度,它表示一个0
15的数据,单位位4个字节,由于TCP拥有固定的20字节的首部,因此数据偏移最小值为5(若小于5则视为格式错误),因此一个TCP的数据包大小为2060字节 -
保留位(6位1字节):目前暂未使用,置0
-
URG(Urgent):当URG为1时,表示紧急指针有效,紧急指针所指示的数据优先处理
-
ACK:当ACK置1时,表示确认序列号字段的值有效,它用于确认接收的数据。在TCP连接的数据传出过程中,数据接收方每次收到数据后都会返回一个带ACK标志的TCP报文,通知发送端已成功接收到数据
-
PSH:当PSH置1时,表示数据接收端应尽快把接受的数据推送到应用层,而不是等待缓存区满后再传输
-
RST:当RST置1时,表示发生了严重的个错误或连接出现异常,需要中断TCP连接,重置连接状态
-
**SYN(Synchronized):**当SYN置1时,表示当前通信双方处于正在建立连接的状态通常出现在“三次握手”时候
-
窗口大小(2字节):表示数据接收端允许发送端发送多个最大数据量
-
校验和(2字节):用于检测TCP首部和数据部分在传输过程中是否发生错误
-
紧急指针(2字节):表示紧急数据的结束位置在数据流钟得偏移量,当URG置1时有效
-
选项(0~40字节):为可选字段,且长度不定,提供一些额外的功能和控制信息;若使用选项,则该字段的大小为4的整数倍
TCP协议的重要机制
TCP相比UDP之所以由更多的应用场景,最核心的因素时TCP提供可靠的传输,可靠的传输并不是要求网络数据100%到达,而是当数据丢包时TCP能有补救措施
网络层
网路层处理数据报的路由和转发,以便将数据从源传输到目的地
作用
-
负责将数据包从源主机传输到目的主机,跨越多个网络
-
处理路由选择和逻辑地址(IP地址)的分配
主要协议
主要有IP、ICMP、ARP
ICMP
用于网络诊断(如ping)
ARP
将IP地址解析为物理地址(MAC地址)
IP需要一个单独的文章介绍,这次只介绍个入门部分
网络层中的IP协议
IP的分类
最大主机号个数 = 2的主机号位数次方-2(要排除全为0和全为1的地址)
特殊主机号
-
主机号全为0:
当主机号全为0时,该IP地址表示的是网络地址,它代表整个网络,而不是网络中的某一台具体的主机。
主要用于网络路由器和子网划分等。网络设备通过识别网络地址来确认数据应该被发送到哪个网络区域。当路由器接收一个数据包时,会检查目标IP的网络部分,将数据包转发到对应的网络 -
主机号全为1:
主机号全为1的IP地址被用作广播地址。在一个特定的网络中,发送到这个地址的数据包会被该网络中所有的主机接收
主机到网络接口层
负责将数据包从一台设备传输到另一台设备
这一层主要涉及到局域网(LAN)和广域网(WAN)之间的连接
相关文章
TCP的三次握手和四次挥手
】**TCP的三次握手和四次挥手实质是TCP通信的连接和断开** **三次握手:为了对每次发送的数据量进行跟踪与协商,确保数据段的发送和接收同步,根据所接收到的数据量而确认数据发送、接收完毕后何时撤销联系,并建立虚连接 四次挥手:终止TCP连接,端开连接时,需要客户端和服务端同发送4个包已确认连接的断开** 三次握手 - **第一次握手:发送一个带SYN标志的数据包给服务端**...
TCP/IP协议族
**TCP/IP协议族包括了很多协议,本次我们详细介绍一些比较重要的协议** 每层协议集 应用层 **应用层常见的包括:FTP、HTTP、SMTP、DNS** FTP **ftp为文件传输协议(File Transfer Protocol,FTP)** 作为网络通信中的基础工具,ftp允许用户通过客户端软件和服务器进行交互,实现文件的上传、下载和其他文件操作(通常运行在TCP...
TCP/IP协议
协议 互联网中常用的协议有HTTP、TCP、IP等。 协议的必要性 简单的说,协议就是计算机与计算机之间通过网络信息时,实现达成的一种“约定”。好比一个中国人说汉语一个外国人说英语,使用不同的国家语言进行沟通,那么肯定无法交流;但是如果两个人约定好都说同一个语言,那么就可以互相沟通通信。 协议分为很多种,每一种协议都明确界定了他们的行为规范。 协议分层 TCP/IP协议 TCP/I...