网络通信与并发编程(一)网络通信、osi五层模型、tcp协议的三次握手与四次挥手

网络通信、osi五层模型、tcp协议的三次握手与四次挥手

文章目录

  • 网络通信、osi五层模型、tcp协议的三次握手与四次挥手
  • 一、网络通信
  • 二、osi五层模型
    • 1.物理层
    • 2.数据链路层
    • 3.网络层
    • 4.传输层
    • 5.应用层
  • 三、tcp协议的三次握手与四次挥手

一、网络通信

网络通信是指在网络中的两个或多个设备(如计算机、智能手机、服务器等)之间传输数据的过程。这些设备通过硬件(如电缆、无线信号等)和软件(如网络协议)相互连接,以确保数据可以在它们之间有效、可靠地传输。

网络通信有两种基本架构c/s(客户端/服务端)和b/s(浏览器/服务端)。对于网络通信中的服务端,一般 会要求其运行稳定且需要绑定一个固定的ip和端口号。

协议:协议规定了数据的格式和结构,网络通信本质是在传输一组组二进制的数字,通过协议可以确保发送者和接收者理解和处理相同的数据格式。

网络通信中数据传输的流程:应用层(client)→操作系统→传输层(包tcp头)→网络层(包ip头)→数据链路层(包以太网头)→物理层(转为二进制)→数据链路层(解以太网头)→网络层(解ip头)→传输层(解tcp头)→操作系统→应用层(server)

二、osi五层模型

1.物理层

物理层主要是基于电器特性发送高低电平的电信号,高电平为1,低电平为0。主要有中继器、集线器、双绞线等。

2.数据链路层

单纯的0、1数字没有意义,需要规定特定的分组才能表达特定的意义,数据链路层的功能是定义了电信号的分组方式。
数据链路层中有网桥、以太网交换机、网卡等设备。

以太网协议是一种统一的数据分组标准,其规定一组电信号构成一个包或者帧,每个包都由head和data组成。

  • head固定18个字节,其中源地址6个、目标地址6个、数据类型6个。
  • data包含46至1500个字节,其为传输数据的具体内容
  • head+data最短为64字节,最长为1518字节,超过最大限制的会分片发送

以太网协助的head中源地址和目标地址都是网卡的物理地址,这个地址也被称为mac地址。mac地址是唯一的,可以用来标识计算机的身份信息。

有了mac地址就可以实现在局域网广播通信。在局域网中计算机通信时会向其他计算机同时发送一个数据包,只有目标地址的计算机收到了发送的数据包以后才会采取回应。

3.网络层

数据链路层中有路由器等设备。
有了mac地址和广播机制以后,理论上世界上所有的计算机就可以实现彼此通信了。但是世界上有那么多的计算机,如果都通过广播的方式进行通信就会引发严重的效率问题,因此需要另外一种方式实现多局域网之间的通信。
ip协议就是针对上述的问题而产生的,ip协议规定:

  • 网络地址的协议叫ip协议,它定义的地址称之为ip地址,由32位二进制表示
  • ip地址的范围从0.0.0.0到255.255.255.255
  • ip地址也可以用四段的十进制表示,如127.0.0.1
  • ip地址分为两部分,一部分标识子网一部分标识主机

子网掩码是表示网络特征的参数,它也是由32为二进制组成的,它的网络部分由1组成,主机部分由0组成。
通过将ip地址和子网掩码进行与运算就可以判断任意的两个ip是否处于同一网络中,如已知两ip为172.16.10.1、172.16.10.2,子网掩码为255.255.255.0,两ip与子网掩码与的结果都是172.16.10.0所有两ip处于同一个网络中。

总结一下我们可以知道ip协议由两个主要的功能:

  • 为每台计算机分配ip地址
  • 确定哪些计算机处于同一网络中

ip数据包也由head和data组成,head长度为20至60字节,data长度为65515字节。ip数据包是以太网数据包的数据部分,一般传输的数据会在网络层包完ip头以后再传输到数据链路层包以太网头。如果ip数据包的数据过长,将会被分为几个以太网包进行发送。

有了ip地址以后就可以找到目标主机所在的网络,但是由于只知道目标主机的ip地址而不知道其mac地址,还是无法实现通信,此时就需要使用ARP协议了。
ARP协议的作用是将IP地址解析为物理地址的协议。在同一个局域网中,由于源主机不知道目标主机的mac地址,源主机会一广播的方式发送arp报文给局域网的所有主机,当目标主机接收报文以后会缓存源主机的mac地址并发送arp报文回应,以此让源主机获取mac地址。为了避免大量的广播包,每台主机都有一个arp缓存列表,该列表会缓存一段时间,当目标主机的mac地址存在arp缓存列表中时,源主机会根据该mac地址直接发送数据包。当两主机处于不同网络中时,源主机会先获取目标主机网关的mac地址,再由网关完成后续的操作。

4.传输层

有了上面的协议以后就可以完成计算机与计算机之间的通信了,但是当一台计算机同时打开多个应用程序时,又应该如何定位我们所需通信的应用程序呢?这就需要用到端口了,端口就是应用程序与网卡关联的编号,其范围在0至65535之间,其中0至1023为系统占用的端口。

传输层的主要功能是建立端口到端口的通信。其包括tcp和udp协议。
tcp协议:

  • 可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包
  • 数据包包含以太网头、ip头、tcp头、数据
  • tcp协议建立通信包含三次握手、四次挥手

udp协议:

  • 不可靠传输,报头由8字节组成,总长不超过65535字节
  • 数据包包含以太网头、ip头、udp头、数据

5.应用层

应用层包含用户使用的许多应用程序,其功能是规定应用程序的数据格式,HTTP、FTP、mail协议等都是工作在该层。

由上面的osi五层网络可知,通过ip+mac+端口号可以确定唯一的应用程序。

三、tcp协议的三次握手与四次挥手

tcp协议在传输数据时首先要通过三次握手建立通信链接,然后基于这个链接进行通信,通信结束时再通过四次挥手解除链接。

在这里插入图片描述
三次握手:客户端发送建立发送信息通道请求报文(SYN)至服务端,服务端会将请求放到半连接池中,当自身有能力响应时根据客户端发送的请求发送回应信息(ACK)并请求客户端建立信息接收通道(SYN),客户端再发送回应报文(ACk),通信通道建立完成。

通信过程:客户端发送数据信息,服务端接收到数据以后会发送回应信息。

四次挥手:当客户端发送完数据以后向服务端发送结束信息发送通道请求(FIN),服务端接收请求并发送回应信息(ACK),当服务端接收完数据以后会向客户端发送接收信息接收通道请求(FIN),客户端接收请求并发送回应(ACK),通信通道解除。

为什么建立通信通道是三次握手,而解除通信通道是四次挥手?
建立通道时没有数据在传输,服务端回应建立发送信息通道和请求建立接收信息通道的报文合在一起发送了。解除通信通道时客户端发送完数据和服务端接收完数据的时间不是同步的,当客户端发送完数据时,服务端可能还在接收数据,所有要四次挥手解除通信通道。

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

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

相关文章

cuda入门学习

最近接触cuda 编程,记录一下。 1 工作实现一个【0-100)的加法 如果用python sum 0 for i in range(200):sumi print(sum)2 cuda 的一些简单的概念 一维情况下大概是这样的 (1个grid * 2个blocks * 4个thread) 3 代码直接上代码 我把100分为20个b…

metahuman如何导入UE5

1.启动 通过EPIC启动UE5(UE5内置有Bridge, 但是UE4是需要单独下在Bridge软件) 2.打开Quixel Bridge 在window(窗口)中打开Quixel Bridge 3.Bridge界面 在弹出的Bridge界面选择模型 需要先下载,然后再导入 4.下载模型 点击需要的模型右上方的绿色箭头下载 5.下…

【论文#码率控制】ADAPTIVE RATE CONTROL FOR H.264

目录 摘要1.前言2.基本知识2.1 蛋鸡悖论2.2 基本单元的定义2.3 线性MAD预测模型 3.GOP级码率控制3.1 总比特数3.2 初始化量化参数 4.帧级码率控制4.1 非存储图像的量化参数4.2 存储图像的目标比特 5.基本单元级码率控制6.实验结果7.结论 《ADAPTIVE RATE CONTROL FOR H.264》 A…

OKHTTP 如何处理请求超时和重连机制

😄作者简介: 小曾同学.com,一个致力于测试开发的博主⛽️,主要职责:测试开发、CI/CD 如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。 😊 座右铭:不…

【ELKB】Kibana使用

搭建好ELKB后访问地址:http://localhost:5601 输入账号密码登录以后 左侧导航有home、Analysis、Enterprise search 、Observability、Security、Management home:首页Analysis:工具来分析及可视化数据Enterprise search:企业级搜…

解读《ARM Cortex-M3 与Cortex-M4 权威指南》——第1章 ARM Cortex-M处理器简介

1. 三级流水线设计 解释:三级流水线设计意味着处理器在执行指令时可以同时处理多个步骤。这些步骤通常包括取指(Fetch)、译码(Decode)和执行(Execute)。好处:这种设计提高了指令的执行效率,使得处理器能够在每个时钟周期内完成更多的工作,从而提升整体性能。2. 哈佛总…

分享一些常用的数据库性能监测工具

以下是一些常用的数据库性能监测工具: 一、MySQL MySQL Enterprise Monitor: 由 MySQL 官方推出,提供全面的数据库性能监控、诊断和优化功能。可以监控数据库的各种指标,如查询性能、连接数、缓存命中率等,并提供警报…

yolo参数调节

1-weight 不同版本的神经网络 可以在这下载复制 2 source图片路径或者文件夹路径 3 img size 尺寸(尽量与神经网络模型匹配) 4 4 -conf-thres 简单理解就是模型识别成功概率超过这一标准才会显示 5 iou多区域重合 (重合比例)…

数学科普读物《从毕达哥拉斯到怀尔斯》

毕达哥拉斯是古希腊数学家,怀尔斯是英国数学家,曾任美国普林斯顿大学教授。这本书是哈工大出版社刘培杰先生主编的。这是一本500多页的书,我不禁慨叹高级数学爱好者刘培杰的博学广识,因为书中纵论古今旁征博引,仅书后的…

数据结构-5.6.二叉树的先,中,后序遍历

一.遍历: 二.二叉树的遍历:利用了递归操作 1.简介: 二叉树的先序遍历,中序遍历,后序遍历都是以根结点遍历顺序为准的,如先序遍历就先遍历根结点 2.实例: 例一: 例二: …

C++中string函数用法总结

一,string的构造函数 string() //无参构造,初始化为空串 string(const string& str) //用str拷贝构造 string(size_t n,char c) //用n个字符c初始化 string(const char* s,size_t n) //用字符串s的前n个字符初始化 string(const string& str…

【最优化方法】最速下降法

给出点 x [1,4,5,8,12] y [7,9,15,14,27] 要找出温度和冰淇淋销量之间的关系,通过线性回归来拟合求出属性和结果之间的线性关系。 如果直接把这些点连起来,是吃力不讨好的,因为如果有新数据进来大概率不在这条线上,这个行为也…

Prometheus + Grafana 监控 MySQL 数据库

文章目录 1、前置介绍2、搭建流程2.1、安装 Docker2.2、安装 MySQL2.3、安装 MySQL Exporter2.4、安装 Prometheus2.5、安装 Grafana 1、前置介绍 本次监控平台搭建,我使用2台阿里云服务器来完成本次的搭建部署操作,配置如下: 阿里云ECS1&am…

【Kubernets】配置类型资源 Etcd, Secret, ConfigMap

文章目录 所有资源概览Etcd详细说明一、基本概念二、主要功能三、架构与组件四、数据模型与操作五、安全与认证六、集群部署与管理 Secret详细说明一、Secret 的类型二、Secret 的创建三、Secret 的使用四、Secret 的更新与删除五、Secret 的安全性 ConfigMap详细说明一、Confi…

2024年恩施职称评前公示

此次公示共有422人,初级职称、中级职称、馆员、畜牧师、助理馆员、三级演员、农艺师等均在一起进行评审前的公示。 根据恩施州职称改革工作领导小组办公室《关于报送2024年度恩施州中初级专业技术职务评审材料的通知》(恩施州职改办〔2024〕14号&#xf…

jdk环境变量配置--小总结

1、jdk安装路径变量 2、在path下添加环境变量

【Python Django + Vue】酒店在线预订系统:用技术说话!

🎓 作者:计算机毕设小月哥 | 软件开发专家 🖥️ 简介:8年计算机软件程序开发经验。精通Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等技术栈。 🛠️ 专业服务 🛠️ 需求定制化开发源码提…

【JavaEE初阶】文件-IO之实现文件系统的操作如何进行实现

前言 🌟🌟本期讲解关于文件IO的操作,这里涉及到比较常用的文件操作哦~~~ 🌈上期博客在这里:【JavaEE初阶】CAS的ABA问题,JUC多线程编程有用的相关类-CSDN博客 🌈感兴趣的小伙伴看一看小编主页&a…

支持向量机-笔记

支持向量机(Support Vector Machine, SVM) 是一种强大的监督学习算法,广泛应用于分类和回归任务,特别是在分类问题中表现优异。SVM 的核心思想是通过寻找一个最优超平面,将不同类别的数据点进行分割,并最大…

数据结构 ——— 顺序表oj题:有效的括号

目录 题目要求 代码实现 题目要求 给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效 有效字符串需满足: 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个…