TCP/IP网络模型

devtools/2024/9/23 4:22:00/

应用层

应用层服务于用户,比如说我们在电脑上使用的软件,都是在应用层上实现的,当不同设备通信时,数据由下一层的传输层实现。应用层提供的功能比如HTTP、FTP、Telnet、DNS、SMTP等。应用层是工作在操作系统中的用户态,传输层以及下层模型工作在内核态。

传输层

传输层主要作用是给应用层提供网络支持,主要服务于应用层,作为数据传输媒介,实现应用与应用之间的通信。

传输层有两个传输协议:TCP与UDP

大部分应用都采用的TCP传输协议,比如说HTTP应用层协议。TCP与UDP相比多了很多特性,比如流量控制,拥塞控制,超时重传,这些特性都是为了保证数据包可以可靠的传输给对方。

UDP只负责传输数据包,不保证数据包是否丢失,实时性更好些,传输效率也更高。

应用传输的数据过大时(超过MSS),传输层会将数据包分块,当有分块丢失时,只需要重传丢失的分块即可,不需要重写发送整个数据包。在TCP协议中,这些分块叫做TCP段。

设备作为接收方时,传输层是要将数据包传输给应用层的。但是同一时间可能有多个应用在收发数据,为了避免数据传给应用时传输错误,通常会使用一个编号将应用区分开来,这个编号叫端口

一些应用的端口是默认的,比如说80的Web服务器端口,22的远程登陆服务器端口,浏览器每一个独立的标签页都是一个独立的进程,操作系统会为这些页面分配独立的端口号,而不是给浏览器应用一个端口。

网络

具体的传输实现,是由网络层实现的。

网络层常用的协议为IP协议,IP协议会将传输层的报文(HTTP与TCP报文)作为数据部分再次封装,加入IP包头组装成IP报文,与传输层相同的是,如果IP报文过大(超过MTU),那么也会进行分片传输,从而得到一个一个即将发送到网络的报文。

网络层是将数据从一台设备发送到另一台设备,为了找到接收数据的设备,我们需要一个与传输层中的端口类似的编号,在网络层这个编号叫做IP地址

这里以IPv4协议举例,IP地址一共32位,分为4段,每段以.进行分割,比如说192.168.100.1,每段占8位。

通过IP地址我们可以进行设备区分,但是网络层是如何进行寻址呢?

因此,IP地址可分为两种意义:

  • 网络号:负责标识该IP地址是属于哪个子网的。
  • 主机号:负责标识同一子网下的不同主机。

IP地址配合子网掩码来计算网络号与主机号。

在说如何计算网络号与主机号之前,先来了解一下子网掩码。比如说,10.100.122.0/24,IP地址后面的/24代表子网掩码1的个数。也就是 [11111111-11111111-11111111-00000000],转换为十进制子网掩码就是255.255.255.0

了解子网掩码是什么之后,再来看如何计算网络号与主机号。将IP地址与子网掩码进行按位与运算得到网络号。将子网掩码取反后与IP地址进行按位与运算,就可以得到主机号。

网络层在寻址过程中,先去匹配相同的网络号(找到同一个子网),然后再去找主机。

IP协议处理方便寻址,还有一个重要作用是路由,在实际中,两台设备并不是使用一个网线连接的,而是通过网关,路由器,交换机等设备连接起来的,那么就会形成很多条网络路径,当数据包到达一个网络节点之后,就需要通过路由算法决定下一步走哪个网络路径。

IP协议中寻址是告诉我们应该去哪里,路由则是根据目的地选择路径。

网络接口层

网络层提供链路级别传输的服务,负责在以太网、WiFi这样的底层网络上发送原始数据包,工作在网卡这个层次,使用Mac地址来标识网络上的设备。

生成IP报头之后,接下来要将数据传输给网络接口层,在IP报头之前再加上Mac报头,并封装成数据帧发送到网络上。

  • MTU:一个网络包的最大长度,以太网中一般是1500字节。
  • MSS:除去TCP与IP头部之后,一个网络包所能容纳的TCP数据的最大长度。

总结

网络接口层的传输单位是帧(frame),IP 层的传输单位是包(packet),TCP 层的传输单位是段(segment),HTTP 的传输单位则是消息或报文(message)。但这些名词并没有什么本质的区分,可以统称为数据包。


http://www.ppmy.cn/devtools/20088.html

相关文章

DELL PowerEdge服务器通过iDRAC升级BIOS遇到的问题

本文对PowerEdge 12G系统,也就是iDRAC 7版本升级BIOS中遇到的几个问题做个总结,对于其他版本理论上应该也是适用的。如果还遇到其他问题,可以添加VX,VX号为 StorageExpert 进行进一步的分析探讨。 第一个问题,成功下载…

设计模式-状态模式在Java中的使用示例-信用卡业务系统

场景 在软件系统中,有些对象也像水一样具有多种状态,这些状态在某些情况下能够相互转换,而且对象在不同的状态下也将具有不同的行为。 为了更好地对这些具有多种状态的对象进行设计,我们可以使用一种被称之为状态模式的设计模式…

爬虫的实战应用之短信炸弹playwright现代网页测试工具

不讲废话,先上原理: 短信炸弹,也就是说持续对一个手机进行发送短信,实现的方式就是,利用某些网站的登录 ,注册的时候,发送短信验证码来实现。 如下图,其中有一个id为phone的输入框&a…

Qt——实现添加子控件后,始终保证在布局低端添加

在 Qt 中使用 QVBoxLayout 时,addStretch() 方法通常用于在布局中添加一个可伸缩的空间,这有助于推动没有固定空间要求的小部件向布局的顶部或底部移动。、 总共有两种办法,一种不断地删除布局,重新添加addStretch() ,…

BIO NIO AIO有什么区别?

通俗易懂地解释这些东西是我的风格, BIO就是阻塞io,就是一个程序在发出io请求之后不能干任何别的事,只能等待请求,不断检测io的状态,只有接受到反馈之后才能干别的事 适用场景: 用作请求少而且连接时间短的情况 NIO就是非阻塞,也就是没有阻塞,怎么没有阻塞了?说白了就是发出…

Python构建学生信息管理系统:需求分析与规划

构建学生信息管理系统:需求分析与规划 在软件开发的初期,进行需求分析与规划是至关重要的一步。它不仅帮助开发者明确项目目标,还能确保最终产品能够满足用户的需求。本文将介绍如何使用Python语言,结合常规网络框架、RESTful技术…

AI视频教程下载:ChatGPT个人生产力提升指南

在本课程中,您将学习如何成功地将ChatGPT融入您的工作和生活,以优化您的社交媒体内容并扩展您的业务。 您将学习如何使用ChatGPT自动创建、校对、总结和翻译文本,以及如何与机器人沟通以实现您的目标。 您还将学习如何创建jQuery代码、编程…

Linux 内核深入理解 - 绪论

目录 多用户系统 进程 内核体系架构 文件系统概述 Base 硬链接和软链接 Unix文件类型 文件描述符与索引节点 文件操作的系统调用 Unix内核简述 进程的实现 可重入内核 进程地址空间 同步和临界区 信号与进程之间的通信 进程管理 内存管理 虚拟内存 随机访问存…