计算机网络知识汇总

OSI七层模型

七层模型一般指开放系统互连参考模型,开放系统互连参考模型 (Open System Interconnect 简称OSI),OSI参考模型是具有7个层次的框架,自底向上的7个层次分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。

背景:生活中每个地方都有自己的方言,而大家如果都将方言肯定就乱了,听不懂,为了让大家都能够畅通的交流通信,从而推出普通话标准,大家都用普通话标准,这样就能畅通无阻的通信了。而网络中的节点也是一样,任何网络中的节点只要都遵循这个模型,然后物理上连接起来,它们之间都可以互相通信。

TCP/IP

TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。 [1]

TCP/IP协议在一定程度上参考了OSI的体系结构。OSI模型共有七层,从下到上分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。但是这显然是有些复杂的,所以在TCP/IP协议中,它们被简化为了四个层次。只有四层体系结构的TCP/IP协议,与有七层体系结构的OSI相比要简单了不少,也正是这样,TCP/IP协议在实际的应用中效率更高,成本更低。

OSI是定义了一个理论的通信模型,而TCP/IP则是实现了这个理论,在这个基础上进行简化的一个通信协议。

OSI七层网络模型TCP/IP四层网络模型对应协议对应设备
应用层应用层HTTP、FTP、SFTP、TELNET、SMTP、WebSocket计算机
表示层
会话层
传输层传输层TCP、UDP防火墙
网络层网络层IP、ICMP、OSPF、EIGRP、IGMP路由器
数据链路层网络接口层SLIP、CSLIP、PPP、MTU交换机
物理层ISO2110、IEEE802集线器

应用层

应用层:应用层是TCP/IP协议的第一层,是直接为应用进程提供服务的。

(1)对不同种类的应用程序它们会根据自己的需要来使用应用层的不同协议,邮件传输应用使用了SMTP协议、万维网应用使用了HTTP协议、远程登录服务应用使用了有TELNET协议。 [1]

(2)应用层还能加密、解密、格式化数据。 [1]

(3)应用层可以建立或解除与其他节点的联系,这样可以充分节省网络资源。 [1]

HTTP

HTTP_百度百科 (baidu.com)

超文本传输协议(Hypertext Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。超文本传输协议是一种用于分布式、协作式和超媒体信息系统的应用层协议,是万维网WWW(World Wide Web)的数据通信的基础。

通信过程

详情见TCP/IP通信过程。

报文格式

请求行 - 通用信息头 - 请求头 - 实体头 - 报文主体

状态行 - 通用信息头 - 响应头 - 实体头 - 报文主体

WebSocket

WebSocket_百度百科 (baidu.com)

是一个通信协议,WebSocket是一种在单个TCP连接上进行全双工通信的协议。

WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

WebSocket 是独立的、创建在 TCP 上的协议。
为了创建Websocket连接,需要通过浏览器发出请求,之后服务器进行回应,这个过程通常称为“握手”(handshaking)。Websocket 通过HTTP/1.1 协议的101状态码进行握手。

只需要进行一次握手连接,后续就可以通过这个连接一直通信。

与HTTP比较

WebSocket只需要进行一次握手连接,然后就可以进行通信。而HTTP一次握手只能通信一次,每次通信都需要进行握手。

WebSocket只在握手的时候是使用http协议,在连接创建后,服务器和客户端之间交换数据时,用于协议控制的数据包头部相对较小。而HTTP每次都要携带完整的头部,开销比较大。

实时性更强,由于服务端可以监控变化数据主动发送数据给客户端。而HTTP一般只能采用客户端轮询的方式实现,延迟更大。

更好的二进制支持。Websocket定义了二进制帧,相对HTTP,可以更轻松地处理二进制内容。

以下两点暂时没用到过:

可以支持扩展。Websocket定义了扩展,用户可以扩展协议、实现部分自定义的子协议。如部分浏览器支持压缩等。

更好的压缩效果。相对于HTTP压缩,Websocket在适当的扩展支持下,可以沿用之前内容的上下文,在传递类似的数据时,可以显著地提高压缩率。

传输层

传输层:作为TCP/IP协议的第二层,传输层在整个TCP/IP协议中起到了中流砥柱的作用。且在传输层中,TCP和UDP也同样起到了中流砥柱的作用。

TCP

TCP(传输控制协议)_百度百科 (baidu.com)

https://www.cnblogs.com/jojop/p/14111160.html

传输控制协议(TCP,Transmission Control Protocol)是为了在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输协议。

TCP是一对一进行通信,广播和多播不适合用TCP

网络层

网络层:网络层在TCP/IP协议中的位于第三层。在TCP/IP协议中网络层可以进行网络连接的建立和终止以及IP地址的寻找等功能。

网络接口层

网络接口层:在TCP/IP协议中,网络接口层位于第四层。由于网络接口层兼并了物理层和数据链路层所以,网络接口层既是传输数据的物理媒介,也可以为网络层提供一条准确无误的线路。

通信过程

TCP/IP协议工作原理和工作流程_tcp工作原理-CSDN博客

https://www.cnblogs.com/jojop/p/14111160.html

1、以web应用为例,在发送数据通信之前先进行三次握手:

①客户端发送SYN包

  • 应用层:客户端应用程序(如浏览器)请求建立连接。
  • 传输层:TCP 协议创建一个 SYN 数据段。这个数据段的 SYN 标志位被设置为 1,表示这是一个同步序列编号的请求,包含一个初始序列号(例如 seq = x)。
  • 网络层:IP 协议将 SYN 数据段封装成 IP 数据包,并添加 IP 头部信息(如源 IP 地址、目标 IP 地址)。
  • 链路层:链路层将 IP 数据包封装成数据帧,并添加链路层头部信息(如源 MAC 地址、目标 MAC 地址)。

发送数据:[链路层头部][IP 头部][TCP 头部 (SYN, seq = x)]

②服务端响应SYN-ACK包

  • 链路层:服务器的网卡接收到数据帧,并将其传递到网络层。
  • 网络层:IP 协议去除 IP 头部,并将 IP 数据包传递到传输层。
  • 传输层:TCP 协议识别 SYN 数据段,生成一个 SYN-ACK 数据段。这个数据段的 SYN 和 ACK 标志位被设置为 1,包含服务器的初始序列号(例如 seq = y)和对客户端序列号的确认号(ack = x + 1)。
  • 网络层:IP 协议将 SYN-ACK 数据段封装成 IP 数据包。
  • 链路层:链路层将 IP 数据包封装成数据帧。

发送数据:[链路层头部][IP 头部][TCP 头部 (SYN, ACK, seq = y, ack = x + 1)]

③客户端发送ACK包

  • 链路层:客户端的网卡接收到数据帧,并将其传递到网络层。
  • 网络层:IP 协议去除 IP 头部,并将 IP 数据包传递到传输层。
  • 传输层:TCP 协议识别 SYN-ACK 数据段,生成一个 ACK 数据段。这个数据段的 ACK 标志位被设置为 1,包含对服务器序列号的确认号(ack = y + 1)。
  • 网络层:IP 协议将 ACK 数据段封装成 IP 数据包。
  • 链路层:链路层将 IP 数据包封装成数据帧。

发送数据:[链路层头部][IP 头部][TCP 头部 (ACK, seq = x + 1, ack = y + 1)]

2、通信

原数据从应用层产生,然后往下经过每一层会根据协议封装数据,到了接收方这边从下往上经过每一层会根据对应的协议对数据进行拆包然后往上传递直到应用层收到原数据。

图上每一层虚线就是在数据封包和解包经过这一层都会遵守一样的协议进行数据的封包和解包,比如HTTP协议,但请求报文经过层层解包到了接收方的的应用层,会根据HTTP请求报文格式:请求行 - 通用信息头 - 请求头 - 实体头 - 报文主体 将数据进行提取,这就是HTTP协议的体现,应用层双方都按这个报文格式进行数据的封装和解包。

这样让人感觉就好像每一层都在直接通信,但实际上每一层不会直接对接通信。

3、四次挥手断开连接

缺陷

像OSl模型一样,TCP/IP模型和协议也有自己的问题。

(1)该模型没有明显地区分服务、接口和协议的概念。因此,对于使用新技术来设计新网络,TCP/IP模型不是一个太好的模板。 [5]

(2)TCP/IP模型完全不是通用的,并且不适合描述除TCP/IP模型之外的任何协议栈。 [5]

(3)链路层并不是通常意义上的一层。它是一个接口,处于网络层和数据链路层之间。接口和层间的区别是很重要的。 [5]

(4)TCP/IP模型不区分物理层和数据链路层。这两层完全不同,物理层必须处理铜缆、光纤和无线通信的传输特征;而数据链路层的工作是确定帧的开始和结束,并且按照所需的可靠程度把帧从一端发送到另一端。 [5]

Socket

        所谓套接字(Socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接口,是应用程序与网络协议栈进行交互的接口 。

        Socket(套接字)可以看成是两个网络应用程序进行通信时,各自通信连接中的端点,套接字主要有目标IP、传输层使用的传输协议、传输层使用的端口号这3个重要参数。

主要类型

1.流套接字(SOCK_STREAM)

        流套接字用于提供面向连接、可靠的数据传输服务。该服务将保证数据能够实现无差错、无重复送,并按顺序接收。流套接字之所以能够实现可靠的数据服务,原因在于其使用了传输控制协议,即TCP(The Transmission Control Protocol)协议。

2.数据报套接字(SOCK_DGRAM)

        数据报套接字提供一种无连接、不可靠的服务。该服务并不能保证数据传输的可靠性,数据有可能在传输过程中丢失或出现数据重复,且无法保证顺序地接收到数据。数据报套接字使用UDP( User DatagramProtocol)协议进行数据的传输。由于数据报套接字不能保证数据传输的可靠性,对于有可能出现的数据丢失情况,需要在程序中做相应的处理。

3.原始套接字(SOCK_RAW)

        原始套接字与标准套接字(标准套接字指的是前面介绍的流套接字和数据报套接字)的区别在于:原始套接字可以读写内核没有处理的IP数据包,而流套接字只能读取TCP协议的数据,数据报套接字只能读取UDP协议的数据。因此,如果要访问其他协议发送的数据必须使用原始套接 [3]。原始套接字主要用于一些协议的开发,可以进行比较底层的操作。

Java中:java.net.Socket类代表创建TCP连接;java.net.DatagramSocket类代表创建UDP连接

工作流程

要通过互联网进行通信,至少需要一对套接字,其中一个运行于客户端,称之为 Client Socket,另一个运行于服务器端,称之为 Server Socket 。

1.服务器监听:所谓服务器监听,是指服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态 [3]。

2.客户端请求:所谓客户端请求,是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端接字提出连接请求 [3]。

3.连接确认:所谓连接确认,是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,就会响应客户端套接字的请求,建立一个新的线程,并把服务器端套接字的描述发送给客户端。一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,接收其他客户端套接字的连接请求 [3]。

数据物理网络传输

TCP/IP协议 (图解+秒懂+史上最全) - 疯狂创客圈 - 博客园 (cnblogs.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/45618.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

信息打点web篇--详解cdn识别与绕过

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 本文着重整理渗透过程中 cdn的相关知识点 cdn简要说明 我们一台服务器如果让外界访问,距离我们服务器近的地区访问的速度快,而远的地区访问速度则会大大减低。为了保证远区域用户的体验&a…

Ubuntu安装MATLAB

一、准备工作 下载MATLAB安装文件: 访问MathWorks官方网站(MathWorks官网),下载适用于Linux的MATLAB安装文件。这通常是一个.iso镜像文件或.zip压缩文件。请注意选择与Ubuntu版本相匹配的MATLAB版本。创建安装目录: 打…

【eNSP模拟实验】单臂路由实现VLAN间通讯(复杂案例)

实验需求 如下图所示,PC1和PC2在vlan10下,PC3和PC4在vlan20下,Server1在vlan30下,需要实现这5台设备之间互相通讯。 实验操作 配置各个终端的ip地址 PC1~PC4都按照下图进行配置(注意ip地址和网关有不同的地方&#…

【C++】继承最全解析(什么是继承?继承有什么用?)

目录 一、前言 二、什么是继承 ? 💢继承的概念💢 💢继承的定义💢 🥝定义格式 🍇继承权限 三、基类与派生类对象的赋值转换 四、继承的作用域 五、派生类中的默认成员函数 &#x1f4a2…

华润万家超市购物卡怎么使用?

前两天整理杂物,翻出来两张华润的礼品卡,好在还没有过期 但是那卡只能在线下使用,而且面值也就一百 让我专门跑一趟华润感觉太不方便了 最后朋友告诉我说,可以在收卡云上面把卡内的余额直接提出来,我两张一百的卡总…

全国最大汽车经销商被曝拖欠员工工资:车主难提车

ChatGPT狂飙160天,世界已经不是之前的样子。 更多资源欢迎关注 7月12日消息,据国内媒体报道,全国最大的汽车经销广汇集团被爆出深陷困境,不仅拖欠工资,旗下的门店也接连关闭。 有爆料称,广汇公司已经出现…

手机和电脑通过TCP传输

一.工具 手机端:网络调试精灵 电脑端:野火网络调试助手 在开始通信之前,千万要查看一下电脑的防火墙是否关闭,否则可能会无法通信 在开始通信之前,千万要查看一下电脑的防火墙是否关闭,否则可能会无法通信…

redis redisson(仅供自己参考)

redis 通过setnx实现的分布式锁有问题 如图: 解决的新的工具为(闪亮登场):redisson redisson可重入锁的原理 实现语言lua: 加锁实现脚本语言: 释放锁的脚本语言: 加锁的lua -- 首先判断这个锁…

复合索引abc,查询的时候查c a和ac都能用到索引吗

复合索引(也称为联合索引)的使用遵循“最左前缀原则”。这意味着查询条件必须从索引定义的最左边开始,并且连续地匹配索引中的列,才能有效地使用该索引。具体到你提到的复合索引 abc,它意味着索引按照 a、b 和 c 列的顺…

基于docker-compose部署zabbix7.0

1.安装docker和docker-compose 已有可跳过,没有参照我的docker一件安装脚本连接放在下方 一键安装dockerv24.0.6以及docker-compose可离线_docker 24对应docker-compose-CSDN博客 2.运行zabbix-server 1.创建zabbix工作目录 mkdir /zabbix 2.编写docker-compos…

求问DAMASK求解中关于yaml文件,报错显示:type dismatch in yaml date node

🏆本文收录于《CSDN问答解答》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&…

Transformer神经网络回归预测的MATLAB实现

Transformer神经网络最初是为自然语言处理(NLP)任务设计的,但它们也可以成功应用于其他序列数据的处理,如时间序列预测和回归任务。 在回归预测中使用Transformer网络通常涉及以下关键步骤和概念: 1. Transformer架…

代码随想录-暑假算法第一天(数组篇)

代码随想录-暑假算法第一天(数组篇) 1. 二分查找 力扣题目链接(opens new window) 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否…

回车不搜索直接页面刷新问题解决

使用技术栈:vue3、elementUiPlus 问题:回车触发方法,会刷新整个页面,不执行搜索 解决方法:在搜索的表单中增加submit.native.prevent submit.native.prevent

GeoTrust ——适合企业使用的SSL证书!

GeoTrust是一家全球知名的数字证书颁发机构(CA),其提供的SSL证书非常适合企业使用。GeoTrust的SSL证书为企业带来了多重优势,不仅在验证级别、加密强度、兼容性、客户服务等方面表现出色,而且其高性价比和灵活的证书选…

C 语言中如何实现图结构?

🍅关注博主🎗️ 带你畅游技术世界,不错过每一次成长机会! 📙C 语言百万年薪修炼课程 【https://dwz.mosong.cc/cyyjc】通俗易懂,深入浅出,匠心打磨,死磕细节,6年迭代&…

[图解]分析模式-01-概述1

1 00:00:01,380 --> 00:00:01,770 好 2 00:00:02,340 --> 00:00:06,440 非常感谢大家能够来上我们 3 00:00:06,450 --> 00:00:07,960 分析模式高阶的课程 4 00:00:09,310 --> 00:00:13,440 这个内容之前在分析设计高阶 5 00:00:13,450 --> 00:00:17,840 也就…

电气常用知识

1、常开、常闭 在不加外力作用下,展示的状态就是常 因此,常开就是在不加外力作用下的 开的状态,也就是断开的状态 常闭就是在不加外力作用下的闭合的状态,也就是闭合的状态 2、单控双控 单控:一个东西只有两种状态…

Ubuntu 修改~/.bashrc终端选择是否使用annconda环境

首先需要明白的是anaconda虽然自带了python,但安装anaconda后并不会覆盖掉你原来的python(pip也是一样的),但安装anaconda后它会把自己的bin目录(里面有python、pip、conda等命令)加到PATH上,而…

宝马退出价格战,19万买不到i3了

ChatGPT狂飙160天,世界已经不是之前的样子。 更多资源欢迎关注 宝马退出价格战 这一消息,源自知名汽车博主孙少军。 7月11日他发文称,“因价格战导致门店亏损严重,宝马7月将会开始降量保价。” 第二天他又做了补充&#xff0c…