热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

TCP数据包的旅程和每一跳中的更改(IP地址和端口发生)

如何解决《TCP数据包的旅程和每一跳中的更改(IP地址和端口发生)》经验,为你挑选了1个好方法。

我试图了解Hop期间IP数据包发生了什么样的结构变化.

请允许我以示例解释我的问题.

traceroute -w 1 google.com

traceroute to google.com (216.58.199.174), 64 hops max, 52 byte packets
 1  192.168.0.1 (192.168.0.1)  1.055 ms  0.857 ms  0.822 ms
 2  10.0.0.1 (10.0.0.1)  2.038 ms  1.477 ms  1.540 ms
 3  * * *
 4  114.79.130.1.dvois.com (114.79.130.1)  3.091 ms  2.076 ms  2.329 ms
 5  10.241.1.6 (10.241.1.6)  3.245 ms  3.102 ms  3.358 ms
 6  10.240.254.140 (10.240.254.140)  4.388 ms  2.149 ms  2.319 ms
 7  10.240.254.1 (10.240.254.1)  3.067 ms  3.336 ms  2.852 ms
 8  10.241.1.1 (10.241.1.1)  2.542 ms  2.339 ms  3.231 ms
 9  1.186.191.10.dvois.com (1.186.191.10)  3.046 ms  3.076 ms  3.382 ms
10  216.239.62.212 (216.239.62.212)  3.290 ms  3.559 ms  3.466 ms
11  209.85.143.5 (209.85.143.5)  3.699 ms  3.250 ms  4.062 ms
12  bom05s08-in-f174.1e100.net (216.58.199.174)  3.739 ms  4.038 ms  3.803 ms

假设我正在向google.com提出请求

IP数据包源自我的机器的第一件事就是将这个位添加到数据包中.

    (我的机器)源IP即假设它 192.168.0.100

    此外,为了简单起见,我们还会根据请求来分配端口号 6000

    目标IP即google.com IP 216.58.199.174(为了简单起见,还指定了目标端口,假设它是80)

    我的mac地址

还有其他细节,IP数据包包含,但我们只关注这3部分

现在我知道IP数据包在跳跃中的其他设备/路由器的帮助下从源传输到目的地(可以在traceroute输出中看到)

但我不清楚IP数据包中的源IP和端口是否在Hop中更新.

我假设它是这样的,因为它来自服务器的响应(这里的谷歌服务器)可以被转发回请求的预期发起者(即我的笔记本电脑浏览器窗口).

所以,如果我所假设的是正确的.这就是事情的运作方式

在第一跳到我的路由器我的路由器更新源IP 192.168.0.1和源端口到6001(假设)在内部它维护一个反向条目表告诉我如果我碰巧192.168.0.1在端口收到响应6001然后我必须将它路由192.168.0.100到端口6000.

像中的每个跳明智(跳变到114.79.130.1.dvois.com,1.186.191.10.dvois.com等等)一个条目是更新即源IP和源端口(在IP包)和反向映射被保持来中继回响应.

我的理解是否正确?也是在跳跃中MAC发生的事情.



1> Ron Maupin..:

您需要查看网络层.应用程序将数据发送到传输层,例如TCP.

TCP具有称为端口的地址,并且应用程序被分配给其中一个地址,例如端口6000.TCP将对这些数据进行分段,并将TCP标头放在数据段上.TCP标头包括源和目标端口号.

TCP将段发送到第3层(IPv4或IPv6).IP将TCP段封装成IP数据包.IP数据包标头将包含源和目标IP地址.

IP将IP数据包发送到第2层,例如以太网.并非所有第2层协议都使用MAC地址.MAC LAN地址由IEEE LAN协议使用.其他第2层协议使用其他内容,或者根本不使用任何内容进行寻址.以太网将第3层IP数据包封装在第2层以太网帧中.以太网帧将具有源和目标MAC地址.主机(您的计算机)将屏蔽源和目标第3层IP地址,以确定目标地址是否在同一LAN上.如果目标位于同一LAN上,则将使用目标主机的MAC地址寻址帧,否则将使用配置的网关的MAC地址作为目标主机进行寻址.这将需要将第3层地址解析为第2层地址.ARP(地址解析协议)将查看目标主机MAC地址是否在其ARP缓存中.如果不是,它将发送ARP请求以获取目标MAC地址.

然后,第2层将帧发送到第1层(物理接口)进行编码并放置在线路上.

当路由器接收到帧时,第2层帧(包括MAC地址)将从数据包中剥离并丢弃,从而丢失原始MAC地址.路由器将递减TTL并创建新的报头校验和,并检查第3层IP数据包以获取目标地址.然后,路由器将查找如何到达其路由表中的目标IP地址.如果在路由表中找不到到目的IP地址的路由,则丢弃该数据包,否则路由器会将数据包切换到目的地的下一个接口,并为新接口创建新的第2层帧.如果下一个接口是WAN接口,它可能使用不使用MAC地址的PPP.

路径中的下一个路由器将获得新帧,并将重复路由过程.这种情况发生在数据包到达最后一个路由器之前,最后一个路由器将放在目标LAN的帧上.目标主机将从发送主机以相反的顺序处理.目标主机将具有来自数据包和段的源第3层和第4层地址,并且它可以使用这些地址以与原始主机是发送方相同的方式发送回源.

路由器是第3层设备,它们只查看第3层数据包,而不是第4层数据包.路由器只会更改数据包的TTL和Header Checksum字段.


推荐阅读
  • 开发笔记:计网局域网:NAT 是如何工作的?
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了计网-局域网:NAT是如何工作的?相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了如何找到并终止在8080端口上运行的进程的方法,通过使用终端命令lsof -i :8080可以获取在该端口上运行的所有进程的输出,并使用kill命令终止指定进程的运行。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • 配置IPv4静态路由实现企业网内不同网段用户互访
    本文介绍了通过配置IPv4静态路由实现企业网内不同网段用户互访的方法。首先需要配置接口的链路层协议参数和IP地址,使相邻节点网络层可达。然后按照静态路由组网图的操作步骤,配置静态路由。这样任意两台主机之间都能够互通。 ... [详细]
  • 本文介绍了如何使用双路由器有线搭建一个小型的局域网网络,解决家庭或公司多个网络设备无法同时上网的问题。详细讲解了两种简单快速的组网方式,并提供了具体的设置步骤和注意事项。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 本文详细介绍了cisco路由器IOS损坏时的恢复方法,包括进入ROMMON模式、设置IP地址、子网掩码、默认网关以及使用TFTP服务器传输IOS文件的步骤。 ... [详细]
  • 本文讨论了在VMWARE5.1的虚拟服务器Windows Server 2008R2上安装oracle 10g客户端时出现的问题,并提供了解决方法。错误日志显示了异常访问违例,通过分析日志中的问题帧,找到了解决问题的线索。文章详细介绍了解决方法,帮助读者顺利安装oracle 10g客户端。 ... [详细]
  • 网卡工作原理及网络知识分享
    本文介绍了网卡的工作原理,包括CSMA/CD、ARP欺骗等网络知识。网卡是负责整台计算机的网络通信,没有它,计算机将成为信息孤岛。文章通过一个对话的形式,生动形象地讲述了网卡的工作原理,并介绍了集线器Hub时代的网络构成。对于想学习网络知识的读者来说,本文是一篇不错的参考资料。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
author-avatar
锋丽恋歌521
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有