TCP/IP四层网络模型

tcpip

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首部长度,它表示一个015的数据,单位位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标志的数据包给服务端**...

tcpip

TCP/IP协议族

**TCP/IP协议族包括了很多协议,本次我们详细介绍一些比较重要的协议** 每层协议集 应用层 **应用层常见的包括:FTP、HTTP、SMTP、DNS** FTP **ftp为文件传输协议(File Transfer Protocol,FTP)** 作为网络通信中的基础工具,ftp允许用户通过客户端软件和服务器进行交互,实现文件的上传、下载和其他文件操作(通常运行在TCP...

tcpip

TCP/IP协议

协议 互联网中常用的协议有HTTP、TCP、IP等。 协议的必要性 简单的说,协议就是计算机与计算机之间通过网络信息时,实现达成的一种“约定”。好比一个中国人说汉语一个外国人说英语,使用不同的国家语言进行沟通,那么肯定无法交流;但是如果两个人约定好都说同一个语言,那么就可以互相沟通通信。 协议分为很多种,每一种协议都明确界定了他们的行为规范。 协议分层 TCP/IP协议 TCP/I...

tcpip