原数据就是用户数据
注意:这里的应用层包括应用层,表示层和会话层
UDP报文段包括UDP头和用户数据(用的什么协议就是什么头)
UDP头包括目的端口号和源端口号
IP数据报包括IP头和UDP头和用户数据
IP头包括目的IP和源IP
帧包括帧头,IP头,UDP头,用户数据,帧尾和CRC校验
帧头包括目的MAC和源MAC
注意:这里的物理层包括数据链路层和物理层
应用层(包括应用层、表示层、会话层)的原数据(用户数据)传输到传输层时,会在用户数据前面加上UDP头
应用层的UDP报文段传输到网络层时,会在UDP头前面加上IP头
网络层的IP报文段传输到物理层(包括数据链路层和物理层)时,会在IP头的前面加上帧头,用户数据的后面加上帧尾和CRC
自己设备的物理层中的帧通过光信号或者电信号经过层层传输到目标设备的物理层
目标设备在物理层会先解析出目的MAC是不是自己的MAC,如果是的话,那么去掉帧头帧尾和CRC,然后传输到目标设备的网络层
目标设备在网络层会先解析出目的IP是不是自己的IP,如果是的话,那么去掉IP头,然后传输到目标设备的传输层
目标设备在传输层解析出目的端口号,然后根据操作系统,找到端口号对应的应用,去掉UDP头最后传输到目标设备应用层的对应应用中去
1.单播(unicast)
一个设备给另外一个设备进行数据传输
注意:单播能跨路由器
2.组播(multicast)
一个设备通过一个或多个路由器的传输到达目标设备
注意:组播关注的是具体的目标设备,谁是目标设备就传给谁
3.广播(broadcast)
一个设备在其所在路由器范围内给所有设备进行数据传输
广播域:一个路由器能连的到的所有的设备就是该路由器的广播域
注意:1.广播只关注谁接入了广播范围,那就会传给谁
2.广播不能跨路由器
ARP协议工作在网络层
ARP协议是根据IP地址获取物理地址的一个TCP/IP协议(注意这里的TCP/IP协议是一个地址族,这个家族里除了TCP/IP协议外还有很多其他的协议)
在发送数据之前使用ARP协议去获取对端设备的MAC地址
ARP的报文格式包括ARP报头,源MAC,源IP,目的MAC和目的IP
ARP报头包括硬件类型(2字节),上层协议类型(2字节),MAC地址长度(1字节),上层协议类型长度(1字节)和操作类型(2字节)
操作类型包括
1.ARP请求
2.ARP相应
PC1要向PC2传输一个数据,此时PC1有PC2的IP地址但是没有PC2的MAC地址所以找不到PC2,这时PC1通过广播的方式发送一个ARP Request(广播可以发送到其所在路由器范围内的所有设备)(此时的ARP Request的源MAC是PC1的MAC,源IP是PC1的IP,目的MAC不知道,目的IP是PC2的IP),每个设备接收到PC1发送的信息后,看自己是不是是不是目的IP,如果是的话会通过单播返回一个ARP Reply(此时的ARP Request的源MAC是PC2的MAC,源IP是PC2的IP,目的MAC是PC1的MAC,目的IP是PC1的IP),然后PC1就知道了PC2的MAC地址了
当发送端广播ARP请求时,本地网络上不会有主机回应(因为IP地址是外网的),此时路由器将会回应该请求,当发送源误认为路由器就是目的主机,会将报文全部转发给它,再由路由器转发报文到外网,则该路由器就被称为ARP代理
在主机开机配置时,会发送一个目的IP地址为自己IP地址的ARP请求报文,该报文称为免费ARP
1.让主机确认本地网络上是否有与自己IP地址相同的主机,若有,则会返回一个错误报文
2.告诉整个广播域,目前某个IP所对应的MAC地址是什么----这一行为就像是在发宣传单,而宣传单是不需要回应的。若接收主机ARP缓存中本身就有发送源主机的IP----MAC对,则会更新,否则,会缓存发送源的IP----MAC对。
注意:这里涉及到了缓存的老化机制,
DNS协议工作在应用
DNS服务器将好记的域名解析成IP地址
注意:本地DNS服务器的缓存也有老化机制
这里最开始的源IP是10.0.0.1
源MAC是10.0.0.1的MAC
它的目的IP是60.0.0.6
目的MAC(也叫下一跳MAC)是Rouer1的MAC(通过路由表找到的)
到Rouer1之后继续传输
这时的源IP是20.0.0.2
源MAC是20.0.0.2的MAC
它的目的IP是60.0.0.6
目的MAC(也叫下一跳MAC)是Rouer2一号端口的MAC(通过路由表找到的)
路由表是通过一步一步的学习变成图中的样子的
有传输层的一般都会有操作系统因为传输层中的数据是有对应协议的头的(头中存的是端口号)
有操作系统的话就有完整的7层的结构,没有操作系统就只有后两层或者后三层的结构