JAVA复习之网络 —— 网络的传输流程

网络的传输流程

网络传输路径的起点: IP地址 终点:IP地址

网络数据传输是基于网络硬件设备一个一个的传输(一跳一跳)
每一个传输的起点和终点都是基于MAC地址
每一次传输都涉及路由器和主机,都有封装和分用

IP与MAC的区别:

IP是路途总体的起点和终点;MAC是路途上每个区间的起点和终点
在这里插入图片描述

1 网络互连 (集线器)

集线器的作用:只做数据的转发
**ARP协议:**建立IP与MAC的映射主机ARP缓存表

ARP协议建立了主机IP地址和MAC地址的映射关系

  1. 在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址;

  2. 数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃;

  3. 因此在通讯前必须获得目的主机的硬件地址
    在这里插入图片描述

  4. 源主机发出ARP请求询问目标IP地址的主机的硬件地址是多少?吧这个请求广播在本地网段

  5. 目的主机接受到广播的ARP请求,发现其中的IP地址与本机相符,发送一个ARP应答数据包给源主机,吧自己的硬件地址写在应答包里

  6. 每台主机都维护一个ARP缓存表,可以用arp -a命令查看。缓存表中的表项有过期时间(一般为20分钟),如果20分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求来获得目的主机的硬件地址

在这里插入图片描述
主机A 发送数据到主机B

- 查找目的主机B的MAC地址:

  •  				*1  查找本地ARP缓存表中通过IP地址查找MAC*
    
  •  									1 找到 : 直接发送数据到主机C
    
  •  									 2 找不到: 主机A发出ARP请求 询问 目的IP的MAC 并把这个请求广播 
    
  •  													1 ARP请求数据包:源MAC+目的MAC(广播形式的FF:FF:…),目的IP
    
  •  													 2 其他主机接收到ARP数据包的处理过程: if(目的ip==自己的ip) 响应回自己的MAC; else 丢弃数据包
    
  •  				*2 更新本地ARP缓存表*
    
  •  				*3 发送数据:(目的MAC : 主机MAC)*
    
  •  						1集线器转发数据报到其他所有主机;if(目的MAC==自己)处理 ;else丢弃																
    

冲突域:
概念:连接同一导线上的所有工作站的集合,或者说是同一物理网段上所有节点的集合或以太网上竞争同一宽带的节点集合。
(房间中所有人同时说话,会让大家互相都听不清)
集线器网络互联存在冲突域,交换机可以解决冲突域。

2. 局域网

局域网可以是同网段,可以是不同网段
同网段:网百络中同一网段指的是IP地址和子网掩码相与得到相同的网络地址。

2.1交换机连接
交换机连接:交换机没有进行数据的加工(封装和分用)
在这里插入图片描述
2 查找本地ARP缓存表,通过目的IP查找目的MAC;
1 如果找到,就直接发送数据包
2 如果本机ARP缓存表找不到目的MAC–>发送ARP请求的广播数据包—>交换机转发—>类似网络互联的查询IP主机MAC的过程
3 发送数据包 — > 交换机查询目的的MAC — > 通过MAC地址转换表,知道要发送数据到哪个端口 — > 通过端口发送对应主机
2.2 交换机+路由器
在这里插入图片描述
主机1发送FTP“某文件下载”数据包到主机4

发送的数据报:源IP+源MAC+源端口号+目的IP+目的MAC+目的端口号+协议号

发送的过程:判断是否本机与目的主机在同一个网段:目的IP+子网掩码 位与操作得到网络号
1 在同一个网段,走交换机连接的逻辑
2 在不同网段:通过ARP缓存表,查询网关IP对应的MAC
1 主机发送数据报为:源IP+源MAC+源端口号+目的IP+目的MAC+目的端口号+协议号
2 路由器接受数据报:
1 路由器:目的IP对应 设备的 MAC地址 同之前ARP缓存查询的过程相同
2 数据报的加工(先分用,在重新封装)
1 数据包的以太网帧(数据链路层)里边包含的源MAC修改为自己(路由器)的MAC,目的MAC修改为目的主机(主机4)的MAC
3 按目的MAC发数据报:发送到主机4
4 目的主机解析(分用),响应数据报(封装发送),和之前发送端的逻辑一样

3. 广域网(重点)

在这里插入图片描述
通过域名查询对应的IP地址:DNS协议(本地DNS缓存–>路由器—>上级DNS服务器…–>全球顶级DNS服务器)

封装数据报:得到五元组信息

在浏览器地址栏输入URL后会发生什么?

  1. 浏览器向DNS服务器请求解析该URL中的域名和对应的IP地址
  2. 根据解析出来的Ip地址和默认端口80 和服务器进行TCP连接 发起三次握手
  3. 建立完连接之后 浏览器向服务器发送HTTP请求;
  4. 服务器对请求作出响应,并把响应后的结果返回给浏览器;
  5. 释放Tcp连接 四次挥手
  6. 浏览器根据其请求得到的资源渲染画面。

在浏览器地址栏输入URL后会发生什么?

URL,统一资源定位符,l简单点就是网址=ip或域名 + 端口号 + 资源位置 + 参数 + 锚点
1.输入一个网址之后,首先浏览器通过查询DNS,查找这个URL的IP地址,(通过层层向上级DNS服
务器查找直到找到对应URL的IP地址)
2.得到目标服务器的IP地址及端口号(http 80端口,https 443端口),会调用系统库函数socket,请
求一个TCP流套接字。客户端向服务器发送HTTP请求报文
(1)应用层:客户端发送HTTP请求报文。
(2)传输层:(加入源端口、目的端口)建立连接。实际发送数据之前,三次握手客户端和服务器建
立起一个TCP连接。
(3)网络层:(加入IP头)路由寻址。
(4)数据链路层:(加入frame头)传输数据。
(5)物理层:物理传输bit。
3.服务器端经过物理层→数据链路层→网络层→传输层→应用层,解析请求报文,发送HTTP响应报
文。
4.关闭连接,TCP四次挥手。
5.客户端解析HTTP响应报文,浏览器开始显示HTML

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值