TCP/TP基础(二)以太网协议,ARP协议,ICMP协议
来源:互联网 发布:bootstrap input控件js 编辑:程序博客网 时间:2024/06/05 12:07
(1)最大传输单元MTU
以太网和IEEE 802.3对数据帧的长度都有一个限制,其最大值分别是1500和1492字节。链路层的这个特性称作M T U,最大传输单元。不同类型的网络大多数都有一个上限。
如果IP层有一个数据报要传,而且数据的长度比链路层的MTU还大,那么IP层就需要进行分片(fragmentation),把数据报分成若干片,这样每一片都小于MTU。
路径MTU
当在同一个网络上的两台主机互相进行通信时,该网络的MTU是非常重要的。但是如果两台主机之间的通信要通过多个网络,那么每个网络的链路层就可能有不同的MTU。重要的不是两台主机所在网络的MTU的值,重要的是两台通信主机路径中的最小MTU。它被称作路径MTU。
路径MTU其实和TCP一个数据报的数据字段的最大长度有很大关系,如果TCP头部IP头部都没有选项时,一般路径MTU最大为576,则最大数据字段MSS=576-20-20.
(2)以太网协议
说到以太网协议,其实链路层在上一文中其实有所提及,其中包含ARP协议,RARP协议和以太网协议
以太网的头部14个字节,分别是6个字节的目的地址(MAC),6个字节的源地址(MAC),以及2个字节的协议类型,来表示以太网协议(0800),ARP协议(0806),RARP协议(8035)
ARP在不知道对方MAC地址也就是缺省表里没有对应目的IP的MAC地址时,会在以太网中发出广播,如果目的IP地址的主机收到的时候,就会做出响应,其他机器会忽视这个报文.
如果说根本没有这个IP地址的话,那就需要ICMP协议来告诉发起者出现差错
I C M P经常被认为是 I P层的一个组成部分。它传递差错报文以及其他需要注意的信息。I C M P报文通常被I P层或更高层协议( T C P或U D P)使用。一些I C M P报文把差错报文返回给用户进程。
I C M P报文是在I P数据报内部被传输的
接下来我们就可以看看Ping怎么在网络里面进行传输,也就是数据的传输
首先如果我们直接给出IP地址,那么直接就开始发送ICMP包,如果给出主机名那就进行DNS解析,获得IP地址,再进行操作,发送ICMP包的时候,先通过ARP广播寻找到目的主机,如果没有则ICMP返回报错信息,如果有,则对面主机返回ARP响应,则把ICMP包填充以太网目的地址,通过以太网发送过去,到对面主机上,进行分用,在IP层得到ICMP,然后返回响应.
- TCP/TP基础(二)以太网协议,ARP协议,ICMP协议
- 以太网数据包TCP、IP、ICMP、UDP、ARP协议头结构详解
- arp协议(以太网)
- TCP/IP基础:ARP 协议
- linux网络编程之TCP/IP基础(二):利用ARP和ICMP协议解释ping命令
- linux网络编程之TCP/IP基础(二):利用ARP和ICMP协议解释ping命令
- linux网络编程之TCP/IP基础(二):利用ARP和ICMP协议解释ping命令
- linux网络编程之TCP/IP基础(二):利用ARP和ICMP协议解释ping命令
- linux网络编程之TCP/IP基础(二):利用ARP和ICMP协议解释ping命令
- TCP/IP协议详解——IP协议,ARP协议,ICMP协议
- 以太网、IP、ICMP、TCP、UDP协议头格式
- TCP/IP协议详解:IP、ARP、RARP、ICMP、IGMP
- TCP/IP-----协议号、端口号、ARP、icmp
- MAC地址,ARP协议,以太网
- TCP/TP协议备忘录
- ICMP 协议基础详解
- 利用ARP和ICMP协议解释ping命令(二)
- tcp/ip ---------- ARP协议
- Springboot 使用 RestTemplate
- codeforce 877D 路径查找
- mac 修改myssql 密码重置
- PAT训练(乙级)—— 1021. 个位数统计 (15)
- CUDA学习笔记(6) 共享内存与全局内存
- TCP/TP基础(二)以太网协议,ARP协议,ICMP协议
- 我们为什么不用c++写网页?
- CkEditor使用技巧
- 封装Retrofit + okhttp + rxjava网络请求框架
- Mysql中的排序规则utf8_unicode_ci、utf8_general_ci的区别总结
- linux常见命令含义
- 【bzoj5107】[CodePlus2017]找爸爸
- grunt serve -f报错:Local npm module "xxx"not find,is it install?
- 利用JDBC对数据库进行简单的操作