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的数据包大小为20~60字节
  • 保留位(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)之间的连接

如果您觉得这篇文章不错,且手里较为宽裕,可以支持一下博主,一分也是缘分😊
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇