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

news2024/12/24 9:07:50

网络通信、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.coloradmin.cn/o/2211557.html

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

相关文章

Java ==> 数组(入门)

文章目录 前言一、一维数组1.入门操作2.何为null?3.数组可以作为函数的参数4.数组可以作为函数的返回值 二、二维数组1.基础操作2.不规则的二维数组 总结 前言 在Java语言当中,数组是一种基本的数据结构,它存储了固定大小的同类型元素的集合…

告别卡顿!五款Windows录屏工具,让每一帧都清晰流畅

小伙伴们,是不是在寻找一款好用、实用的Windows录屏工具呢?别担心,这次我给大家带来了一款热门录屏工具的详细评测和使用感受,包括福昕录屏、转转录屏、爱拍录屏、OBS录屏和EV录屏。快来看看哪款最适合你吧! 一、福昕录…

反射的学习

1、什么是反射 反射允许对封装类的字段,方法和构造函数的信息进行编程访问。 也就是: 反射允许对成员变量,成员方法和构造方法的信息进行编程访问。 2、获取class对象 获取一个类的字节码文件对象: 方式1:Class.…

linux 环境运行 jenkins.war包,有可能会出现字体问题,jdk版本:11 jenkins 版本:2.420

jenkins的目录: /usr/jenkins 启动命令 java -Djava.awt.headlesstrue sudo timedatectl set-timezone Asia/Shanghai-Xmx1024m -jar jenkins.war --httpPort8090 任意目录启动: nohup java -Djava.awt.headlesstrue -Xms1024m -Xmx1024m -jar /usr/j…

基于opencv答题卡识别判卷

我们是一个深度学习领域的独立工作室。团队成员有:中科大硕士、纽约大学硕士、浙江大学硕士、华东理工博士等,曾在腾讯、百度、德勤等担任算法工程师/产品经理。全网20多万粉丝,拥有2篇国家级人工智能发明专利。 社区特色:深度实…

Excel使用技巧:数据-》分列:处理log数据,把有用的信息提取出来;查找Ctrl+F,替换Ctrl+H;通配符

Excel的正确用法: Excel是个数据库,不要随意合并单元格。 数据输入的时候一定要按照行列输入,中间不要留空,不然就没有关联。 数据-》分列:处理log数据,把有用的信息提取出来。 按照向导一步一步操作。…

D36【python 接口自动化学习】- python基础之函数

day36 函数的定义 学习日期:20241013 学习目标:输入输出与文件操作﹣-49 函数定义:如何优雅地反复引用同一段代码? 学习笔记: 函数的用途 定义函数 调用函数 # 定义函数 def foo():print(foo)print(foo …

数据传送指令

文章目录 MOVXCHGPUSH和POPIN和OUTXLATLEA LDS LESLEALDSLES LAHF SAHFPUSHF POPF总结 MOV MOV dst, src ; dst <-- src可以进行8位或16位数据的传送源操作数可为立即数、寄存器、存储器操作数目的操作数不可为立即数&#xff0c;CS、IP寄存器两操作数必有一个寄…

Hi3244 应用指导

Hi3244 是一款DIP8封装高性能、多模式工作的原边控制功率开关。Hi3244内高精度的恒流、恒压控制机制结合完备的保护功能&#xff0c;使其适用于小功率离线式电源应用中。在恒压输出模式中&#xff0c;Hi3244 采用多模式工作方式&#xff0c;即调幅控制&#xff08;AM&#xff0…

LLM - 配置 ModelScope SWIFT 环境与 Qwen2-VL 模型推理 教程 (1)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/142827217 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 SWIFT …

AI 工具大比拼:ChatGPT 与豆包的魅力与未来展望

&#x1f9d1; 博主简介&#xff1a;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编程&#xff0c;…

C++的类和动态内存分配(深拷贝与浅拷贝)并实现自己的string类

首先&#xff0c;我们先写一个并不完美的类&#xff1a; #include<iostream> #include<cstring> using namespace std;class Mystring{private:char *p;int len;static int num;friend ostream& operator<<(ostream& os, const Mystring& c);pu…

QT开发--多线程

第十四章 多线程 QThread 是 Qt 中实现多线程编程的核心类&#xff0c;提供跨平台线程管理。 使用 QThread 有两种方法&#xff1a; 1、 继承 QThread&#xff1a;重写 run() 方法&#xff0c;实现线程的具体操作。Qt4.8 之前较常用。 2、 使用 QObject 和 moveToThread()&…

2024-10-13 NO.1 Quest3 激活教程

文章目录 1 下载 Occlus 助手2 打开 quest 热点3 Quest3 连接 wifi4 详细文档5 参考教程 1 下载 Occlus 助手 ​ 网址&#xff1a;https://ochelper.xlemon.cn/home.html。 2 打开 quest 热点 ​ 下载 Occlus 助手后&#xff0c;双击 exe 文件打开。 ​ 过程中按照程序提示执…

各类排序详解

前言 本篇博客将为大家介绍各类排序算法&#xff0c;大家知道&#xff0c;在我们生活中&#xff0c;排序其实是一件很重要的事&#xff0c;我们在网上购物&#xff0c;需要根据不同的需求进行排序&#xff0c;异或是我们在高考完报志愿时&#xff0c;需要看看院校的排名&#…

【动手学深度学习】6.2 图像卷积(个人向笔记)

1. 互相关运算 严格来说&#xff0c;卷积层是一个错误的叫法&#xff0c;因为它本质上是互相关运算而不是卷积运算。我们暂时忽略通道看看二维图像数据和隐藏表示。那么输出大小可以表示为 我们自己实现一个二维互相关运算 2. 卷积层 卷积层中有两个参数&#xff1a;卷积核权…

Medieval Kingdom UI 中世纪王国AAA级UI游戏界面

这款中世纪王国风格的大型素材包包含大量绘图、图标、用户界面(UI)元素、完整的世界地图和文明图标。它将助您打造一款游戏,或为您的3D游戏增添亮点。您还可以为对话制作国王的动画,为4K游戏创建独特的面板和窗口。提供两种独特皮肤:经典(冷色调)和白金(暖色调)。 素…

国家基本药物目录数据库查询3种方法(2018、2012、2009年版)

国家基本药物目录是一份由国家卫生健康委员会等相关部门制定的药品清单&#xff0c;旨在满足国家公共卫生需求&#xff0c;保障基本医疗服务。该目录包括了多种药品&#xff0c;覆盖了不同的疾病治疗领域&#xff0c;如抗生素、心血管药物、神经系统药物、抗肿瘤药物、维生素和…

STM32 -- USB CDC 虚拟串口通信

本篇操作: 通过CubeMX Keil&#xff0c;配置STM32作为USB设备端&#xff0c;与电脑上位机进行通信&#xff08;CDC&#xff09;&#xff1b;通用带USB功能的 STM32 芯片 &#xff08;如F1、F4等&#xff0c;系统时钟配置不同&#xff0c;代码通用&#xff09;。 目录 一、 S…

[论文精读]Active and Semi-Supervised Graph Neural Networks for Graph Classification

论文网址&#xff1a;Active and Semi-Supervised Graph Neural Networks for Graph Classification | IEEE Journals & Magazine | IEEE Xplore英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若…