计算机网络基础进阶

三次握手四次挥手

三次握手

1------建立连接----------------------2 ACK=1,seq=0

2------传输数据,建立连接---------1

1------传输数据,建立连接---------2

三次握手用于建立TCP连接,确保通信双方都准备好进行数据传输。整个过程涉及三次报文交换:

  1. 第一次握手(客户端发送SYN):
    客户端向服务器发送一个SYN(同步序列编号)请求,表示希望建立连接,同时带上一个初始序列号。
  2. 第二次握手(服务器发送SYN-ACK):
    服务器收到客户端的SYN请求后,回复一个SYN-ACK包。这个包表示服务器同意建立连接,并确认客户端的SYN,同时带上自己的初始序列号。
  3. 第三次握手(客户端发送ACK):
    客户端收到服务器的SYN-ACK包后,发送一个ACK(确认)包,确认服务器的SYN号。此时,双方都同意连接建立,TCP连接正式建立。

四次挥手

1--------断开连接--------------------------2 fin=1,ACK=1

2--------确认断开连接---------------------1

2--------若有数据传完正式断开连接-----1

1--------确认断开连接---------------------2

四次挥手用于断开TCP连接,确保双方都能够正常终止数据传输。它需要四次报文交换:

  1. 第一次挥手(客户端发送FIN):
    客户端发送FIN(结束标志)包,表示它已经完成数据传输,想要终止连接。
  2. 第二次挥手(服务器发送ACK):
    服务器收到FIN后,回复一个ACK包,确认客户端的FIN,但服务器此时可能还有数据要发送,因此连接暂时不会关闭。
  3. 第三次挥手(服务器发送FIN):
    当服务器也完成数据传输后,发送一个FIN包,表示它也准备好关闭连接。
  4. 第四次挥手(客户端发送ACK):
    客户端收到服务器的FIN后,发送一个ACK包,确认服务器的FIN。此时,连接完全关闭。

  • 三次握手是为了确保客户端和服务器都能正常建立连接。
  • 四次挥手则是为了保证双方能够妥善地关闭连接,避免数据丢失
网络通信

由于数据在二层封装时无法得知目标IP地址的MAC地址,导致二层的封装无法进行,所以产生了ARP( Address Resolution Protocol )

ARP缓存表是用来存放IP地址和MAC地址的映射关系。

ttl : TTL(Time to Live)是网络通信中用于限制数据包生存时间的一个字段。它的主要作用是防止数据包在网络中无限循环。

arp通告: ARP通告(ARP Announcement)是网络中使用ARP协议时的一种特殊的ARP请求,通常用来更新或确认网络中设备的IP地址和MAC地址的对应关系。

路由:目标地址 (主机路由,网络路由) 下一跳(网关) 最终实现

0.0.0.0/0.0.0.0:默认路由

A,B同一网络

A,B同一网络中通信,本地通信广播,获取mac地址 ARP广播协议

  • A发起通信请求:假设A想要与B通信,首先A会构建数据包,包含源IP地址(A的IP地址)、目标IP地址(B的IP地址)以及其他协议层信息。
  • 数据包封装与发送:数据包在发送之前会被封装,加入二层的MAC地址信息。A设备的网卡查找目标B的MAC地址(通常通过ARP协议查找B的MAC地址)。一旦获取B的MAC地址,A的网卡会将数据包发送到网络。
  • 交换机转发数据:假如A和B在同一个局域网中,数据包会通过网络中的交换机(如果有)进行转发。交换机会根据目标MAC地址查询其MAC地址表,找到B所在的端口,并将数据包转发到对应的端口。
  • B接收数据包:当数据包到达B时,B的网卡会检查目标MAC地址是否匹配自己的MAC地址。如果匹配,B的网卡会将数据包发送给操作系统。操作系统将解封装报文,解析并传递到上层的应用程序。

A,C不同网络通信,封装mac地址

  1. A发起通信请求:设备A想与设备C通信,首先A会构建一个包含源IP地址(A的IP地址)和目标IP地址(C的IP地址)的数据包。
  2. 数据包封装:数据包在发出前会封装成以太网帧,其中包含源MAC地址(A的MAC)和网关的MAC地址(而不是C的MAC,因为C不在同一个网络)。
  3. 数据包到达默认网关:数据包经过A所在的局域网,并通过交换机或其他网络设备,最终到达A的默认网关(通常是路由器)。
  4. 路由器转发:路由器会根据数据包中的目标IP地址(C的IP地址)查找路由表,确定数据包的下一跳(可能是另一个路由器或C所在的子网)。此时,数据包的源MAC地址更新为路由器的MAC地址,目标MAC地址更新为下一跳设备的MAC地址。
  5. 数据包到达C所在网络:数据包通过网络传输后,最终到达C所在的子网。在这里,数据包会被进一步转发,最终到达C设备。
  6. C接收数据包:设备C的网卡检查目标MAC地址是否匹配自己。如果匹配,C设备会接收并处理该数据包。

访问网站的全过程

1.DNS解析:将域名转化为地址,浏览器会查询本地缓存,找不到就向配置的DNS服务器发送查询请求,DNS会返回对应的IP地址

2.建立TCP连接,浏览器使用获得的IP地址和端口与百度服务器建立连接,三次握手

3.发送HTTP请求,TCP建立后,浏览器向服务器发送一个HTTP请求报文

4.服务器处理请求,百度的服务器收到请求后,会处理请求,查找相应的资源,处理完毕后,服务器会生成一个HTTP响应报文

5.发送HTTP响应,服务器将响应报文送回给客户端,响应报文中包含状态行,响应头,空行和响应体等

6.浏览器渲染页面:浏览器接收到HTTP响应后,解析HTML内容,下载并处理CSS、JavaScript和图片等资源。浏览器将页面内容呈现给用户。

7.断开连接,如果使用的是HTTP/1.0,连接在响应发送完毕后会立即关闭。如果使用的是HTTP/1.1,连接可以保持打开(Keep-Alive),以便复用同一连接发送更多请求。关闭连接需要进行四次挥手(Four-way Handshake)

linux主机接入到网络中:

本地通信:ip/netmask跨网络通信:路由(网关)基于主机名通信:DNS服务器地址(主DNS服务器地址。备用DNS服务器地址,第三DNS服务器地址)

网络接口命名方式

以太网:ethX
ppp网络:pppXo<insdex>:集成设备的设备索引号
s<slot>:扩展槽的索引号
x<MAC>:基于mac地址的命名
p<bus><slot>:基于总线及槽的拓扑结构进行命名

配置方式

静态指定:命令或者修改配置文件ifcfg:ifconfig:配置IP,NETMASKroute:路由netstat:状态及统计数据查看iproute2:ip add:地址和掩码  ip link:管理网络接口  IP route:路由ss:状态及统计数据查看centos7引入了nm(Network Manager)命令:nmcli:命令行工具nmutl:text window工具依赖:DNS服务器指定需要修改/etc/resolv.conf文件。配置文件:centos:/etc/sysconfig/network-scripts/ifcfg-网卡nameubuntu:/etc/netplan/01-netcfg.yaml
动态分配:本地网络中有DHCP服务,DHCP动态分配ip地址

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

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

相关文章

Gin 协程mysql客户端

一、Gin框架 mysql配置 这里选择yaml文件配置 二、配置读取 viper 读取yaml文件中对应配置 三、mysql 的协程客户端 文件位置 package databaseimport ("database/sql""fmt""github.com/spf13/viper""log""net/http"&quo…

鸿蒙_基础

HarmonyOS基础 页面跳转 import { router } from kit.ArkUIButton(去首页).onClick(()>{router.pushUrl({ // 普通跳转&#xff0c;可以返回url:pages/Index}) }) Button(登录).onClick(()>{router.replaceUrl({ // 替换跳转&#xff0c;无法返回&#xff0…

Zabbix进阶实战!将告警推送到Syslog服务器详细教程

需求场景&#xff1a; 用户需要将zabbix产生的告警事件推送给rsyslog服务器&#xff0c;syslog服务器再对事件日志进行分析处理. 环境配置信息 服务器 IP地址 ZabbixServer 192.168.200.195 Rsyslog服务器 192.168.200.128 *Rsyslog服务器防火墙需要放通 UDP/514端口 推送脚本…

C#描述-计算机视觉OpenCV(7):MSER特征检测

C#描述-计算机视觉OpenCV&#xff08;7&#xff09;&#xff1a;MSER特征检测 基本概念操作实例效果优化 基本概念 前文C#描述-计算机视觉OpenCV&#xff08;6&#xff09;&#xff1a;形态学描述了如何对图像的前后景特征形态进行检测与运算&#xff0c;本篇将分析基于形态的…

CANoe与C#联合仿真方案

引言 CANoe作为一款强大的网络仿真工具,能够模拟各种通信协议,尤其是在汽车领域的CAN、LIN、Ethernet等协议。而C#作为一种广泛使用的编程语言,能够为CANoe提供灵活的用户界面和逻辑控制。本文将探讨如何将CANoe与C#结合,实现高效的联合仿真方案。 1. 系统架构 联合仿真…

秋招突击——8/6——万得数据面试总结

文章目录 引言正文面经整理一1、讲一下java的多态&#xff0c;重载&#xff0c;重写的概念&#xff0c;区别2、说一下Java的数组&#xff0c;链表的结构&#xff0c;优缺点3、创建java线程的方式有哪些&#xff0c;具体说说4、创建线程池呢、每个参数的意义5、通过那几种方式保…

软件测试工程师:如何写出好的测试用例?

软件测试用例(Test Case)是软件测试过程中的一种详细文档或描述&#xff0c;用于描述在特定条件下&#xff0c;对软件系统或组件进行测试的步骤、输入数据、预期输出和预期行为。编写高质量的测试用例是确保软件质量的关键步骤之一。以下是一些编写优秀测试用例的建议&#xff…

如何快速解决谷歌网站页面收录难题?

在外贸网站的运营中&#xff0c;页面无法被谷歌收录是一个常见的困扰。即便你的内容再优秀&#xff0c;如果搜索引擎的爬虫无法抓取到你的页面&#xff0c;那一切努力都将白费。而GPC爬虫池服务可以帮助你快速解决网站页面的收录问题。它通过千万级的爬虫池资源&#xff0c;强力…

数据结构与算法:贪心算法与应用场景

目录 11.1 贪心算法的原理 11.2 经典贪心问题 11.3 贪心算法在图中的应用 11.4 贪心算法的优化与扩展 总结 数据结构与算法&#xff1a;贪心算法与应用场景 贪心算法是一种通过选择当前最佳解来构造整体最优解的算法策略。贪心算法在很多实际问题中都取得了良好的效果&am…

NGINX 保护 Web 应用安全之基于 IP 地址的访问

根据客户端的 IP 地址控制访问 使用 HTTP 或 stream 访问模块控制对受保护资源的访问&#xff1a; location /admin/ { deny 10.0.0.1; allow 10.0.0.0/20; allow 2001:0db8::/32; deny all; } } 给定的 location 代码块允许来自 10.0.0.0/20 中的任何 IPv4 地址访问&#xf…

如何保证测试用例的充分性?

需求理解与分析&#xff1a; 深入理解软件需求规格说明书&#xff08;SRS&#xff09;&#xff0c;确保所有需求都被正确理解。 将需求分解为更小的、可测试的功能点或特性。 等价类划分&#xff1a; 将输入数据划分为若干等价类&#xff0c;从每个等价类中选取一个或少数几个…

【AIGC】优化长提示词Prompt:提升ChatGPT输出内容的准确性与实用性

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 &#x1f4af;前言&#x1f4af;长提示词的挑战&#x1f4af;谷歌的优化长提示词技术关键因素分析 &#x1f4af;长提示词的设计原则&#x1f4af;优化长提示词的新框架方法&#x1f4af;实验结果分析不…

“网络协议入门:HTTP通信的四大组成部分“

White graces&#xff1a;个人主页 &#x1f649;专栏推荐:Java入门知识&#x1f649; &#x1f439;今日诗词: 春水满四泽&#xff0c;夏云多奇峰&#x1f439; ⛳️点赞 ☀️收藏⭐️关注&#x1f4ac;卑微小博主&#x1f64f; ⛳️点赞 ☀️收藏⭐️关注&#x1f4ac;卑微…

Android 13 SystemUI 隐藏下拉快捷面板部分模块(wifi,bt,nfc等)入口

frameworks/base/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSFactoryImpl.java createTileInternal(tileSpec)方法注释想隐藏的模块即可。

【leetcode|哈希表、动态规划】最长连续序列、最大子数组和

目录 最长连续序列 解法一&#xff1a;暴力枚举 复杂度 解法二&#xff1a;优化解法一省去二层循环中不必要的遍历 复杂度 最大子数组和 解法一&#xff1a;暴力枚举 复杂度 解法二&#xff1a;贪心 复杂度 解法三&#xff1a;动态规划 复杂度 最长连续序列 输入输…

Mac 远程 Windows 等桌面操作系统工具 Microsoft Remote Desktop for Mac 下载安装详细使用教程

最近需要在 Mac 上远程连接控制我的 windows 电脑系统&#xff0c;经过一番尝试对于 win 来说还是微软自家推出的 Microsoft Remote Desktop for Mac 最最好用&#xff0c;没有之一 简介 Microsoft Remote Desktop是一款由微软公司开发的远程桌面连接工具&#xff0c;可以让用…

Linux基础——信号

目录 1. 什么是信号&#xff1f; 2. 信号的产生 ①键盘的组合键 ②kill命令 ④产生异常 ⑤软件条件 ⑥进程等待中的core dump 3. 信号的保存 ①信号的发送与接收 ②为什么需要保存信号&#xff1f; ③信号是如何保存的 4. 信号的捕捉处理 ①信号的处理与处理时机…

Redis Time Series介绍和命令大全

Redis Time Series介绍和命令大全 Redis Time Series1 时序序列是什么2 Redis Time Series的特性3 內存模型4 命令详解命名链接表命名详解表TS.CREATETS.ADDTS.ALTERTS.CREATERULETS.DECRBYTS.DELTS.DELETERULETS.GETTS.INCRBYTS.INFOTS.MADDTS.MGETTS.MRANGETS.MREVRANGETS.QU…

WORFBENCH:一个创新的评估基准,目的是全面测试大型语言模型在生成复杂工作流 方面的性能。

2024-10-10,由浙江大学和阿里巴巴集团联合创建的WORFBENCH&#xff0c;一个用于评估大型语言模型&#xff08;LLMs&#xff09;生成工作流能力的基准测试。它包含了一系列的测试和评估协议&#xff0c;用于量化和分析LLMs在处理复杂任务时分解问题和规划执行步骤的能力。WORFBE…

微信小程序文本收起展开

这里写自定义目录标题 微信小程序文本收起展开常见问题的梯形背景框 微信小程序文本收起展开 参考 https://juejin.cn/post/6963904955262435336 <!-- 常见问题解答 --><view classcontentBottom><view classBottomFirst><text id0 data-id0 class&quo…