计算机tcp/ip网络通信过程

目录

(1)同一网段两台计算机通信过程

(2)不同网段的两台计算机通信过程

(3)目的主机收到数据包后的解包过程


(1)同一网段两台计算机通信过程

如果两台计算机在同一个局域网中的同一网段中,它们之间的通信链路大致如下:

1.源主机

  • 应用层生成数据。
  • 传输层将数据封装成段(TCP)或数据报(UDP)。
  • 网络层将段或数据报封装成IP数据包,并设置目标IP地址(即目标主机的IP地址)。
  • 数据链路层将IP数据包封装成帧,并添加MAC地址信息(源MAC地址和目标MAC地址)。

2.本地网络

  • 源主机将帧发送到本地网络。图中以太网驱动程序在链路层,以太网驱动程序是软件,它使操作系统能够与网卡进行通信和控制。网卡是硬件,它提供了与网络连接的物理接口。当操作系统需要发送数据时,它会将数据发送给以太网驱动程序,驱动程序再将数据封装成帧传递给网卡进行传输。同样地,当网卡接收到数据时,它会将数据传递给驱动程序,驱动程序再将数据传递给操作系统进行处理。以太网驱动程序与网卡之间通过特定的接口和协议进行通信,以确保数据的正确传输和接收。
  • 如果有交换机的话(一般路由器会兼有交换机的功能),网卡将帧发送到交换机中后,交换机会根据帧中的目标MAC地址查找对应的端口,并将帧转发到该端口。如果交换机不知道目标MAC地址在哪个端口,它可能会发送ARP请求来查询目标MAC地址。
  • 在没有交换机的情况下,如果局域网是一个简单的点对点或总线型网络(这在现代网络中很少见,但在某些老旧的网络架构或特定应用中可能仍然存在):
    • 点对点连接:如果局域网中只有两个主机,并且它们之间是通过点对点连接(如直接连接的两根网线或一个点对点设备)进行通信的,那么源主机发送的帧将直接到达目的主机,无需经过任何中间设备。
    • 在总线型网络中,所有的主机都连接在同一条通信电缆(称为总线)上。源主机将帧发送到本地网络后,这个帧就会在整个本地网络上进行传播。总线上的所有主机都会接收到这个帧,但是只有目标MAC地址与帧中指定的目标MAC地址相匹配的主机才会处理这个帧。其他主机则会忽略这个帧。

3.目标主机

  • 当帧到达目标主机时,数据链路层会解封装帧,提取IP数据包,并将其传递给网络层。
  • 网络层解封装IP数据包,提取传输层的数据段或数据报,并将其传递给传输层。
  • 传输层解封装数据段或数据报,提取应用层的数据,并将其传递给应用层。

在同一网段时,两台主机通信不需要经过路由器,直接网卡到网卡。因为当两台主机在同一网段时,它们之间的通信是直接的,它们之间的通信通常不会经过路由器(Router)。路由器主要用于连接不同的网络,如局域网与广域网(WAN)或两个不同的局域网,并基于IP地址中的网络部分(网络号或子网号)来决定数据包的转发路径。

(2)不同网段的两台计算机通信过程

如果两台计算机在不同的网段中,那么数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器,如下图所示:

  • 链路层有以太网、令牌环网等标准,链路层负责网卡设备的驱动、帧同步(即从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。交换机是工作在链路层的网络设备,可以在不同的链路层网络之间转发数据帧(比如十兆以太网和百兆以太网之间、以太网和令牌环网之间),由于不同链路层的帧格式不同,交换机要将进来的数据包拆掉链路层首部重新封装之后再转发。
  • 网络层的IP协议是构成Internet的基础。Internet上的主机通过IP地址来标识,Internet上有大量路由器负责根据IP地址选择合适的路径转发数据包,数据包从Internet上的源主机到目的主机往往要经过十多个路由器。路由器是工作在第三层(网络层)的网络设备,同时兼有交换机的功能,可以在不同的链路层接口之间转发数据包,因此路由器需要将进来的数据包拆掉链路层和网络层两层首部并重新封装。IP协议不保证传输的可靠性,数据包在传输过程中可能丢失,可靠性可以在上层协议或应用程序中提供支持。
  • 数据包通常是通过网卡先发送到交换机,再从交换机发送路由器(通常路由器一般具备交换机的功能,所以很多也是直接发送到路由器),然后路由器根据路由表决定下一个发送的路由。
  • 网络层负责点到点(ptop,point-to-point)的传输(这里的“点”指路由器,不过在同一网段时两台主机不需要经过路由器,直接网卡到网卡),而传输层负责端到端(etoe,end-to-end)的传输(这里的“端”通常指的是源主机上的应用进程和目的主机上的应用进程),传输层可选择TCP或UDP协议。

(3)目的主机收到数据包后的解包过程

目的主机收到数据包后,如何经过各层协议栈最后到达应用程序呢?其过程如下:

  1. 以太网驱动程序首先根据以太网首部中的“上层协议”字段确定该数据帧的有效载荷(payload,指除去协议首部之外实际传输的数据)是IP、ARP还是RARP协议的数据报,然后交给相应的协议处理。
  2. 假如是IP数据报,IP协议再根据IP首部中的“上层协议”字段确定该数据报的有效载荷是TCP、UDP、ICMP还是IGMP,然后交给相应的协议处理。
  3. 假如是TCP段或UDP段,TCP或UDP协议再根据TCP首部或UDP首部的“端口号”字段确定应该将应用层数据交给哪个用户进程。IP地址是标识网络中不同主机的地址,而端口号就是同一台主机上标识不同进程的地址,IP地址和端口号合起来标识网络中唯一的进程。

虽然IP、ARP和RARP数据报都需要以太网驱动程序来封装成帧,但是从功能上划分,ARP和RARP属于链路层,IP属于网络层。虽然ICMP、IGMP、TCP、UDP的数据都需要IP协议来封装成数据报,但是从功能上划分,ICMP、IGMP与IP同属于网络层,TCP和UDP属于传输层。


end

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

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

相关文章

便溏平衡的乐章:肾合指引出汗与便溏的微妙对话

平衡的乐章:肾合指引出汗与便溏的微妙对话 在人体的舞台上,汗水与大便扮演着不可或缺的角色。然而,当汗水如瀑布般倾泻,大便却变得稀软不成形,这背后或许隐藏着阳虚的密码。本文将带你探索这其中的奥秘,揭…

一个案例告诉你,MySQL如何查询今天、昨天、近7天、近30天、本月、上个月、本季度、上季度、本年、上一年数据

参考博客 mysql查询当天/昨天/近7天/近30天/本月/上个月/本季度/上季度/本年/上一年 数据 正文内容 创建测试案例(也可直接使用附录MySQL脚本生成数据) 1、新建测试表 CREATE TABLE example (id INT AUTO_INCREMENT PRIMARY KEY,date_column DATE,d…

C/C++开发,opencv-objdetect模块,CascadeClassifier人脸识别应用

目录 一、CascadeClassifier应用简介 1.1 objdetect模块 1.2 CascadeClassifier类 1.3 detectMultiScale函数详解 二、CascadeClassifier应用示例 2.1 模型及图片下载准备 2.2 程序代码 2.3 程序编译及运行 一、CascadeClassifier应用简介 1.1 objdetect模块 在OpenCV…

如何识别并选择正规、优质的外汇交易平台?

外汇市场的日益繁荣吸引了越来越多的投资者,但同时也带来了众多外汇平台的涌现。如何在这些平台中筛选出正规、可信的平台,成为了每位外汇交易者必须面对的首要问题。以下,我们将为您揭示如何鉴别外汇平台真伪的几个关键方法: 首先…

7个卖出信号出现,昂首资本立即盈利收场

在上篇文章中,我们和各位投资者讨论了如果使用匕首交易策略进行交易,但是如果只买进不卖出,是不是还是盈利不了?Anzo Capital昂首资本认为只有低买高卖才能盈利赚钱,只要发现盈利信号就要立即卖出盈利收场!…

HTTP/超文本传输协议(Hypertext Transfer Protocol)及HTTP协议通信步骤介绍和请求、响应阶段详解;

目录 一、HTTP/超文本传输协议 特点和功能 请求-响应模型 版本和扩展 安全性和加密 二、HTTP协议通信步骤介绍 三、请求、响应阶段详解 HTTP请求 HTTP响应 示例 一、HTTP/超文本传输协议 HTTP/超文本传输协议(Hypertext Transfer Protocol)是…

Spring Cache自定义序列化解决乱码问题

Spring Cache数据缓存到 Redis中的 value是乱码问题(包含日期格式转换),主要是因为序列化方式导致的。 Spring Cache使用 Redis缓存管理器时,默认 value使用的是 JDK序列化值的方式,所以导致缓存的 value乱码的问题。 …

Java八股文面试全套真题

Java八股文面试全套真题 一、Redis1.1、你在最近的项目中哪些场景使用了redis呢?1.2、缓存穿透1.3、布隆过滤器1.4、缓存击穿1.5、缓存雪崩1.6、redis做为缓存,mysql的数据如何与redis进行同步呢?(双写一致性)1.6.1、读…

nginx与nginx-rtmp-module安装

nginx与nginx-rtmp-module安装 画了好几天图,实在有些乏力,找点有意思的事情做做 觉得视频流传输挺有意思,B站找了些视频,但感觉有些大同小异,讲得不是很清楚 FFmpeg/RTMP/webRTC丨90分钟搞定直播逻辑-推流-流媒体服…

君子签打造“签+存+管”一体化签署平台,助推信创数字化改造

近年来,在国家信创战略的引导下,在建设数字中国、网络安全强国、推动产业升级等背景下,中国信创产业规模持续扩大,展现出前所未有的活力。根据艾媒咨询市场调研,2023年中国信创产业规模将达20961.9亿元,202…

怎么把图片大小调小?在线改图片大小的方法

怎么把比较大的图片压缩变小呢?在使用图片的时候,比较常见的一个问题就是图片太大导致无法正常上传,需要将图片处理到合适的大小之后,才可以正常在网上上传。现在一般调整图片大小多会通过使用在线改图片大小的在线工具来处理&…

信息素养大赛晋级复赛,你们都刷题库了吗?

2024年全国青少年信息素养大赛初赛成绩之前发布了,今天同学们可以查询是否晋级信息素养大赛复赛了,复赛应该会难度比较大,7月复赛,8月全国总决赛,据6547网题库获悉,今年初赛的人数近22万人。 查询方式&…

【面试干货】事务的并发问题(脏读、不可重复读、幻读)与解决策略

【面试干货】事务的并发问题(脏读、不可重复读、幻读)与解决策略 一、脏读(Dirty Read)二、不可重复读(Non-repeatable Read)三、幻读(Phantom Read)四、总结 💖The Begi…

运维系列.Linux下的用户管理

运维系列 Linux下的用户管理 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_28550263/ar…

c# 输出二进制字符串

参考链接 C#二进制输出数据_c# 输出二进制 123.5的方法-CSDN博客https://blog.csdn.net/a497785609/article/details/4572112标准数字格式字符串 - .NET | Microsoft Learnhttps://learn.microsoft.com/zh-cn/dotnet/standard/base-types/standard-numeric-format-strings#BFo…

大规模团队的数据库开发,如何用OceanBase工具快速建立企业级账号体系

前言 为了让数据库开发的安全性与可靠性得以充分保障,数据库开发工具的管控能力显得尤为关键。构建一个健全的账号体系,能够协助开发团队实现对数据库开发工具的全方位管控,从而有效防范各类数据安全隐患,确保数据库开发的顺利进…

软件测试、测试模型、测试用例

软件开发的五个模型 瀑布模型(Waterfall Model) 瀑布模型是所有其他模型的基础框架,瀑布模型的每个阶段都只执行一次,因此是线性顺序进行的开发模式优点:强调开发的阶段性; 强调早期计划及需求调查&#…

01Linux以及操作系统概述

课程目标 1.了解现代操作系统的整体构成及发展历史 2.了解Linux操作系统及其分支版本 3.直观上理解服务器端与桌面端版本的区别 课程实验 1.通过对CentOS和Ubuntu的演示,直观理解Linux与Windows的异同 课堂引入 本章内容主要为大家详细讲解Linux操作系统(以下简…

ABB机器人碰撞检测灵敏度设置

机器人的碰撞灵敏度是指机器人对碰撞事件的识别和反应能力。碰撞灵敏度取决于机器人的感知和控制系统以及其硬件结构。控制系统则负责根据感知系统的反馈信息,对机器人进行相应的控制和调整,以减少或避免碰撞。控制系统可以根据碰撞的严重程度来判断机器…

计算机毕业设计Hadoop+Hive地震预测系统 地震数据分析可视化 地震爬虫 大数据毕业设计 Spark 机器学习 深度学习 Flink 大数据

2024 届本科毕业论文(设计) 基于Hadoop的地震预测的 分析与可视化研究 姓 名:____田伟情_________ 系 别:____信息技术学院___ 专 业:数据科学与大数据技术 学 号:__2011103094________ 指导…