TCP/IP网络模型
在网络模型中有分为7层模型(OSI模型)和5层模型和TCP/IP模型
OSI模型将应用层和表示层作为独立的两层,而TCP/IP模型将它们合并为一个应用层。
两种对比来说,TCP/IP模型更符合实际开发应用
应用层
应用层是最上层的一层,也是在开发中接触到最多的,因为在开发中一般需要提供HTTP接口来返回信息
应用层支持HTTP、FTP、DNS、Telnet等传输数据
等协议,应用层是不用去关心数据是如何传输的,只需要把要传输的数据交给下边的层
而且应用层是工作在操作系统中的用户态,传输层及以下则工作在内核态,
从应用层到传输层的操作是在操作系统中去完成的,通过网络协议栈的Api(Socket)来完成
应用程序通过 Socket 将数据发送出去时,操作系统内核会将数据从用户空间传输到内核空间,
然后将数据封装成 TCP、UDP 或其他协议的数据包,准备进行传输
总结应用层的大致作用:
- 提供HTTP、FTP等网络服务
- 实现应用程序间的数据交换
- 建立和维护应用程序之间的通信
传输层
运输层的任务就是负责向两个主机中进程之间的通信提供通用的数据传输服务。应用进程利用该服务传送应用层报文。
传输层中的最重要的任务是数据传输的可靠性和完整性的保障。为此,它使用了一些技术,如流量控制、拥塞控制、纠错和校验等等,以确保数据传输的正确性。
另外,它还提供了多路复用和即时连接等技术,以帮助应用程序高效地使用网络资源
在传输层会有两个传输协议,分别是 TCP(传输控制协议) 和 UDP(用户数据报协议)
在TCP使用了包括数据分段、确认应答、超时重传、流量控制等机制来保证数据传输的正确性和可靠性
UDP 相对来说就很简单,简单到只负责发送数据包,不保证数据包是否能抵达对方,但它实时性相对更好,传输效率也高
TCP和UDP的区别分别是:
可靠性:TCP 是一种面向连接的协议,可以提供可靠的数据传输,保证数据不会丢失和损坏。UDP 是一种无连接的协议,不提供任何可靠性保障,数据发送后可能会丢失或损坏。
连接方式:TCP 是面向连接的协议,通过三次握手建立连接,传输数据完成后还需要四次握手释放连接。UDP 是无连接的协议,直接发送数据,无需建立和释放连接。
延迟性:由于 TCP 需要在建立连接后再传输数据,会造成一定的延迟,所以 TCP 在实时性要求不高的场景下表现并不出色。UDP 直接发送数据,几乎没有延迟,适合实时性要求高的场景。
数据量:TCP 在数据传输时需要分段并封装成 TCP 报文段,还需要创建和维护数据传输控制块,所以相对来说占用的网络资源较多,适合数据量较大、要求完整传输的场景。UDP 直接将数据封装成 UDP 数据报,相对来说占用的网络资源较少,适合短数据量、快速传输的场景。
总之,TCP 适合要求数据传输可靠、数据量较大、不要求实时性的场景;UDP 适合对实时性要求高、数据量较小、可丢失的场景
网络层
网络层负责将数据从一个设备传输到另一个设备,网络层通过 IP (Internet Protocol)协议实现
可以理解为通过IP协议的寻址操作,在寻址的过程中,先匹配到相同的网络号(表示要找到同一个子网),才会去找对应的主机
除了寻址能力, IP 协议还有另一个重要的能力就是路由。实际场景中,两台设备并不是用一条网线连接起来的,
而是通过很多网关、路由器、交换机等众多网络设备连接起来的,那么就会形成很多条网络的路径,因此当数据包到达一个网络节点,就需要通过路由算法决定下一步走哪条路径
IP 协议的寻址作用是告诉我们去往下一个目的地该朝哪个方向走,路由则是根据「下一个目的地」选择路径
IP协议的寻址过程可以分为三个步骤,分别是主机向路由器的寻址、路由器向路由器的寻址、路由器向主机的寻址
主机向路由器的寻址:主机会根据自己的IP地址和子网掩码,判断目标地址是否在本地子网中。
如果在本地子网中,则会直接发送ARP请求,获取目标主机的MAC地址。如果目标地址不在本地子网中,则会将数据包发送到本地网关(即本地路由器)的MAC地址。路由器向路由器的寻址:路由器会根据路由表中的信息,选择下一跳路由器,并将数据包发送给下一站路由器。如果下一跳路由器不在本地子网中,则会通过ARP协议获取下一跳路由器的MAC地址。
路由器向主机的寻址:当数据包到达目标子网时,路由器会使用ARP协议获取目标主机的MAC地址,然后将数据包发送到目标主机。如果路由器无法获取目标主机的MAC地址,则会将数据包发送到本地网关进行转发。
网络层和传输层的基本区别在于,网络层处理的是分组(packet),而传输层处理的是数据流(stream)
传输层通过协议(如TCP或UDP协议)从上层应用程序接收数据,并将数据分割成较小的报文段(segment),从而能够被网络层传输
网络接口层
每经过一层,都会在数据包上加上请求头
在通过网络层获取到目标IP后,会将目标IP加到数据包上,生成了 IP 头部,接下来要交给网络接口层(Link Layer)在 IP 头部的前面加上 MAC 头部,并封装成数据帧(Data frame)发送到网络上。
IP 头部中的接收方 IP 地址表示网络包的目的地,通过这个地址我们就可以判断要将包发到哪里,但在以太网的世界中,这个思路是行不通的
以太网在判断网络包目的地时和 IP 的方式不同,因此必须采用相匹配的方式才能在以太网中将包发往目的地,
而 MAC 头部就是干这个用的,所以,在以太网进行通讯要用到 MAC 地址,MAC 头部是以太网使用的头部,它包含了接收方和发送方的 MAC 地址等信息,
我们可以通过 ARP 协议获取对方的 MAC 地址
所以说,网络接口层主要为网络层提供「链路级别」传输的服务,负责在以太网、WiFi 这样的底层网络上发送原始数据包,工作在网卡这个层次,使用 MAC 地址来标识网络上的设备
总结
这就是TCP/IP分层的大致
TCP/IP网络模型的更多相关文章
- TCP/IP 网络模型
前言 互联网是怎么构成的,又是怎么运作的?什么是 TCP/IP 网络?为什么远隔万里的计算机可以互相通信?计算机网络作为 IT 行业的基石,是工程师永远绕不开的话题. 计算机网络的分层体系结构 计算机 ...
- OSI与TCP/IP网络模型分层
学习linux的人,都会接触到一些网络方面的知识.作为一个linux方面的萌新,今天,小编就接触了OSI模型和TCP/IP协议栈,那么什么是OSI模型呢? OSI模型,开放式系统互联通信参 ...
- 计算机的OSI和TCP/IP网络模型
1.计算机的网络模型分为两种OSI模型和TCP/IP模型,它们的对应关系如下: 2.针对OSI模型,每一层都有各自的功能. 应用层 应用层是OSI模型中最靠近用户的一层,负责为用户的应用程序提供网 ...
- 服务器开发基础-Tcp/Ip网络模型—完成端口(Completion Port)模型
本文对于初学网络编程的极为友好,文中所有代码全部基于C语言实现,文中见解仅限于作者对于完成端口的初步认识,由于作者才疏学浅,出现的错误和纰漏,麻烦您一定要指出来,咱们共同进步.谢谢!!! 完成端口(c ...
- OSI七层网络模型与TCP/IP四层模型介绍
目录 OSI七层网络模型与TCP/IP四层模型介绍 1.OSI七层网络模型介绍 2.TCP/IP四层网络模型介绍 3.各层对应的协议 4.OSI七层和TCP/IP四层的区别 5.交换机工作在OSI的哪 ...
- OSI七层网络模型与TCP/IP四层模型
1.OSI七层结构图: 2.TCP/IP四层结构图: 3.各层对应的协议 4.OSI七层和TCP/IP四层的区别 OSI网络模型和TCP/IP网络模型对应关系: 5.交换机工作在OSI的哪一层 如果有 ...
- 网络知识学习1---(基础知识:ISO/OSI七层模型和TCP/IP四层模型)
以下的内容和之后的几篇博客只是比较初级的介绍,想要深入学习的话建议自己钻研<TCP/IP详解 卷1:协议> 1.ISO/OSI七层模型 下四层是为数据传输服务的,物理层是真正的传输数 ...
- TCP/IP协议(一)
TCP/IP是Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协 ...
- 001.网络TCP/IP工程知识点
一 互联网概述 计算机网络定义:由自主计算机互连起来的集合体. 计算机网络两大部分:硬件:计算机.通信设备.接口设备和传输介质. 软件:通信协议和应用软件. 广域网拓扑结构通常有:网状拓扑结构和环形拓 ...
- 前端工程师如何理解 TCP/IP 传输层协议?
网络协议是每个前端工程师都必须要掌握的知识,TCP/IP 中有两个具有代表性的传输层协议,分别是 TCP 和 UDP,本文将介绍下这两者以及它们之间的区别. TCP/IP网络模型 计算机与网络设备要相 ...
随机推荐
- SQL SERVER 2014 双机热备操作流程-数据库双向同步 (第一篇:发布)
需求:需要两个数据库双向同步,即A数据库变动,B及时更新.B数据库变动,A及时更新.思路:利用SQL Server的发布和订阅功能进行同步,在A数据库进行发布<合并发布>,在B数据库进行订 ...
- 使用Python+Appium+夜神模拟器,并连接uiautomatorviewer
本文不介绍安装步骤,实在是太多博文了 一.安装 Python:3.8 Appium:1.22.3 夜神模拟器 node JDK1.8 SDK 二.成功连接模拟器 PytCharm代码如下: # cod ...
- loadrunner添加/清除 cookies
web_add_cookie("reloadCount=1;domain={Host}"); 清除 cookies web_cleanup_cookies():
- 在POD的ENV中添加POD的信息
主要用到的参数: - name POD_NAME volumeFrom: fieldRef: fieldPath: metadata.name - name: POD_IP volumeFrom: ...
- TP5中redirect实现重定向及带参数跳转
1.控制器 重定向url传参 try{ $result = Db::name('wupin')->insert($ist); if($result){ $this->redirect(ur ...
- 网络如何运作——详细DNS、HTTP、网站
详细的DNS 什么是DNS? DNS(域名系统)为我们提供了一种简单的方式来与互联网上的设备进行通信,而无需记住复杂的数字.就像每个房子都有一个唯一的地址可以直接向它发送邮件一样,互联网上的每台计算机 ...
- 【LeetCode回溯算法#10】图解N皇后问题(即回溯算法在二维数组中的应用)
N皇后 力扣题目链接(opens new window) n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击. 给你一个整数 n ,返回所有不同的 n 皇 ...
- 查看Doris表占用空间
近期想统计下各表占用的存储空间大小,官网文档SHOW-TABLE-STATUS给的语句很简单,但是对于列的含义写的不是很明白,我写入数据验证了一下. Doris版本:1.2 查看当前数据库下所有表的信 ...
- Python3.10 的开发环境的搭建
安装 下载 Python3.10 或者其他版本:Download Python | Python.org 如果 Windows 操作系统下载,默认是下载 64 位操作系统的 exe 安装包:pytho ...
- C# 动态创建类,动态创建表,支持多库的数据库维护方案
1.创建表 SqlSugar支持了3种模式的建表,非常的灵活,可以MYSQL MSSQL ORACLE等用同一语法创建数据库,不需要考虑数据库的兼容性 中间标准: string 大文本 5.1.3. ...