计算机网络的相关知识点总结(一)

news/2024/5/17 19:51:54 标签: 网络, tcp, java

1.谈一谈对OSI七层模型和TCP/IP四层模型的理解?

        不管是OSI七层模型亦或是TCP/IP四层模型,它们的提出都有一个共同的目的:通过分层来将复杂问题细化,通过各个层级之间的相互配合来更好的解决计算机中出现的问题。

        说到分层,就有对应的具体不同的分层模型。TCP/IP四层模型其实是对OSI七层模型的简化版。OSI网络七层模型包括以下几个部分:

OSI网络七层模型

层级

(高-->低)

层级名称对应功能
7应用层为计算机用户提供服务
6表示层数据处理(编码解码、加密解密、压缩解压缩)
5会话层管理会话(建立,维护、重连)
4传输层为两个计算机进程之间的通信提供通用的数据传输服务
3网络路由和寻址(决定数据在网络中的路径)
2数据链路层计算机相邻节点的直接通信
1物理层为数据链路层提供传输介质的,为计算机相邻节点的通信提供以比特流的透明传输

 

        层与层之间交互是基于“接口”的服务调用,当前层级负责接收下一层提供的服务,同时为自己的上一层提供服务。本层级之间只需关注自己内在的功能,层级内之间的交互是基于“协议”的。

        而TCP/IP四层模型则包括应用层(应用层、表示层、会话层)、传输层、网络层、网络接口层(数据链路层、物理层),如下:

        

层级层级名称常见协议
4应用层DNS:域名解析协议
FTP:文件传输协议
SMTP:简单邮件传输协议
3传输层

TCP:传输控制协议

UDP:用户数据报协议
2网络IPV6:互联网协议
ICMPv6:互联网控制协议
1网络接口层

ARP:地址解析协议(数据链路层)

2.谈谈TCP协议的3次握手过程?

        利用TCP协议建立连接时,会产生三次握手,三次握手是发生在客户端(接受方)与服务器(发送方)之间的。

        第一次握手:由客户端主动打开,并主动发送建立连接请求的数据包(同步SYN=1,确认ACK=0)给服务器端,客户端由主动打开转换为发送状态;

        第二次握手:服务器被动打开接收客户端发送的建立连接请求的数据包,若服务器同意建立连接,则向客户端发送一个ACK确认=1,SYN同步=1的数据包,此时服务器转换为接收状态;

        第三次握手:客户端接收到服务器端发送的同意连接的数据包后,状态变为建立连接成功状态,随后向服务器端发送一个ACK=1的确认数据包,此时服务器端状态也是建立连接成功状态。

        由三次握手,客户端与服务器端成功建立连接。

3.TCP协议为什么要3次握手?2次,4次不行吗?

        握3次手,是恰到好处的。为什么这么说呢?是因为若是2次握手,会造成重复连接的情况,而4次握手或更多次则会带来资源上的浪费。客户端与服务器端建立连接,是由客户端主动发起请求(第一次),服务器端告知客户端同意建立连接(第二次),客户端告知服务器端我知道你同意即确认(第三次),确保了双方之间通信的畅通然后开始数据传输。

        如果没有这第三次的确认,如果客户端由于网络延迟或其他原因导致的未及时发送请求连接的数据包,有可能就会再次重新发送请求连接的数据包,服务器端收到并同意连接,而此时第一个未及时发送的数据包又正常发送了,势必会导致服务器的再一次同意连接,这就导致了重复的连接,造成了不必要的资源浪费。

        如果是4次及更多,我们要思考一个问题,建立连接的目的是?没错,是数据传输。三次握手就已经可以保证收发双方的正常通信了,此时应该要进行数据传输了,更多次的握手只会导致资源的浪费或者多次的请求连接的带来的不可控性。

4.谈谈TCP协议的四次挥手过程?

        TCP协议的四次挥手是为了释放收发双方的连接的。

        第一次挥手:客户端向服务器发出FIN=1的数据包,用来告知服务器断开连接的。

        第二次挥手:服务器接收到终止连接的请求后,同意终止向客户端发出ACK=1的同意断开连接数据包,此时真的断开了吗?答案是否定的,因为是无法保证客户端向服务器发出断开请求时,服务器刚好不发送数据给客户端。

        第三次挥手:服务器已经处理完发生要发送的数据后,正式向客户端发送FIN=1的断开连接的数据包。此时收发双方之间真的不能再发送数据了。

        第四次挥手:客户端向服务器端发送ACK=1的确认数据包。
        至此,收发双方彻底断开连接。

        其实你稍微观察,客户端就像那个“渣男”,服务器端更像是一位“善解人意的女朋友”,哈哈哈,好了,开个玩笑。

 


http://www.niftyadmin.cn/n/5042433.html

相关文章

机器学习算法:从基础到应用

随着科技的快速发展,人工智能已经成为我们生活中不可或缺的一部分。在人工智能的众多分支中,机器学习算法以其强大的预测和决策能力,成为推动智能技术不断进步的关键力量。本文将详细介绍机器学习算法的背景、原理、模型建立、应用场景以及未…

ROS2 从头开始​​:第 1 部分 — 机器人操作系统简介

火星上的机器人(AI生成图像) 一、说明 ROS2是机器人的朋友,一个他们所依赖的平台,用于沟通、协调和控制,帮助他们实现目标。ROS2以DDS为核心,帮助机器人探索新世界、新任务、新可能性,是一个方…

清华博士面试的准备(已通过)

内修(30%) 不管如何 任何人都不能影响你的心态。因为冷静、理性,才能处理好95%以上的问题。剩下的5%我可以不拥有。不能既要、又要、还要。尊重客观规律。放下我执。 价值导向、解决问题为导向。 允许一切事情的发生,是我们最大的…

Git远程分支项目强制覆盖本地项目

此操作会将本地项目代码与Git远程仓库代码保持完全一致,可能会导致自己本地修改的代码被覆盖,覆盖后找都没法找那种。所以操作前请确认,本地所有修改文件是否不重要或者自己以备份。 操作主要分几个步骤完成。 第一步:获取远程所…

【 获得完美走位】python实现-附ChatGPT解析

1.题目 题目描述: 在第一人称射击游戏中,玩家通过键盘的A、S、D、W四个按键控制游戏人物分别向左、向后、向右、向前进行移动,从而完成走位。 假设玩家每按动一次键盘,游戏人物会向某个方向移动一步, 如果玩家在操作一定次数的键盘并且各个方向的步数相同时, 此时游戏人物…

美团2024届秋招笔试第一场编程【代码】

发现之前上课口胡的好多bug😅😅 现在贴上的代码都是AC的 一、小美的排列构造 题意:小美定义一个数组a的权值计算如下: 首先将a的每一对相邻两项求和,得到一个b数组。那么b数组的最大值减最小值即为a数组的权值。 …

python数据类型

文章目录 np.arraytorch.tensorlist(没有shape)pd.DataFrameset {1, 2, 3}dict {"1":1, "2":2} np.array a np.array([[1,2,3],[4,5,6]]) print(f"a {a}") # a [[1 2 3] # [4 5 6]] print(f"a.size {a.size…

内网穿透,轻松实现PostgreSQL数据库公网远程连接!

文章目录 前言1. 安装postgreSQL2. 本地连接postgreSQL3. Windows 安装 cpolar4. 配置postgreSQL公网地址5. 公网postgreSQL访问6. 固定连接公网地址7. postgreSQL固定地址连接测试 前言 PostgreSQL是一个功能非常强大的关系型数据库管理系统(RDBMS),下…