计算机网络--tcp/ip分层模型 前3层

文章目录

  • 参考
  • 分层
  • 前3层总结
  • 总结这3层的协议:
  • ip协议
    • 特点
    • ip头部-ipv4
    • ip头部-ipv6

参考

低并发编程 公众号

分层

常用的分层方式有3种:iso7层模型、 tcp/ip4层模型、 通用5层模型

通用5层模型: 物联网输用(物联网叔用)。下面主要介绍前3层。

前3层总结

层次 设备 介绍 携带了哪些数据
物理层 集线器(收到信息广播出去,可以减少连线) 集线器把信息广播出去,其他电脑收到消息判断是不是给自己的
数据链路层 交换机(内部维护映射表: mac地址-端口) 交换机可以判断给谁,不用广播给所有人了。
这样组成的是以太网。
映射表的构建:交换机发给所有人,有回复的是目标端口。
可以把多个交换机连起来扩大网络:每台交换机需要记住每个mac地址在哪个端口,因此映射表会很大。
源mac目标mac、数据包。数据称为帧
网络层(ip协议) 路由器(每个端口都有mac地址和ip地址,负责转发) 同一子网通信:不经过路由器
不同子网的AB通信:数据先从A到路由器,再由路由器到B。
子网:ip地址和子网掩码并运算后相同的在一个子网。
源mac目标mac、源ip目标ip,数据称为数据报

A怎么判断发给路由还是直接给B:
例如:A的ip是192.168.0.1 想发送给B:192.168.1.1,由于子网掩码是225.225.225,发现AB不在一个子网,因此A修改目标为路由器(默认网关):192.168.0.254。后面从路由器到B的传输就是路由器的事了。

路由器怎么找B:
路由表:用于B的目的ip地址到端口(走哪个口出去)的映射。这个表的格式: 目标子网ip-下一跳-端口编号。如 “192.168.0.0/24 - 0端口” 表示192.168.0.XXX的发送到0端口。如果目标子网ip没有和路由器之间相连,中间隔了一个路由器。下一跳就会是该路由器的ip。如“192.168.2.0/24 - 192.168.0.5”“ 192.168.0.5-端口2”
路由表怎么来:路由算法+人工配置

A不知道同一个子网的B的mac地址怎么发给B:
arp协议。A的电脑里有一张 ip-mac 的表。同样的,路由器发给交换机时也要知道B的mac地址,所以路由器也有一张arp表(记录和它相连的交换机相连的电脑的ip-mac)。
表怎么建立:A广播arp请求,B收到后给A响应。

注意:数据中始终包含 A的mac和ip地址以及B的ip地址。只有一个目标mac地址在变化:可能是B也可能是某个路由器。

总结:
计算机网络--tcp/ip分层模型 前3层_第1张图片

通过这3层,数据可以发送给任意ip的电脑了。

总结这3层的协议:

层数 协议
物理层 不重要
数据链路层 不重要
网络层 ip协议、ARP、RARP、ICMP、IGMP
计算机网络--tcp/ip分层模型 前3层_第2张图片

ip协议

特点

无连接:不维护数据报的链路状态信息。即数据报之间没有关系。

ip头部-ipv4

第1部分:

版本号(4):说明是ipv4还是ipv6
IHL(4):规定ip头部长度,其值最大为15,因此ip头部最大是15*32bit,也就是60字节。头部长度一般是20字节,所以这个值一般是5,分成5部分,每部分个4字节
DS(6):区分服务,用于指定优先级(低的后发或丢弃)。标记给路由器做处理
ECN(2):拥塞指示,用于tcp拥塞控制?
总长度(16);整个数据包的长度(头+数据。单位:字节),最大是65535字节。因为底层协议可能填充(或切片),所以要指定长度。

第2部分:
标识(16):数据报的编号,前面说过数据报无连接。不保证接收顺序。所以要编号以便传输层将多个ip数据报拼接起来。
标志(3):第1位不用。第2位为1表示禁止路由器分段。第3位为1表示上层数据分段了,且我不是最后一段。
头部偏移(13):用于分片功能。说明当前分片恢复时放在偏移量为多少的位置(单位字节)。

第3部分:
生存期(8):数据包可以经过的路由器上限,如64,255。每经过一个路由就减1,并更新校验和。
协议(8):表示数据部分的类型,如6(tcp),17(udp)。
头部校验和(16):确保头部没出错

第4、5部分
源ip(32)
目标ip(32)

比特发送顺序:大端,即先0-7, 然后8-15 等等

ip头部-ipv6

计算机网络--tcp/ip分层模型 前3层_第3张图片

数据前面可能有多个头部。头部链后面才是数据。
没有校验和:不校验头部,交给高层.

头部固定40字节长,前面8字节是其他信息,后面32字节是ip。看看前8个字节

版本号(4):值是6,表示ipv6
DS(6):同上
ECN(2):同上
流标签(20):???

负载长度(16):数据+扩展头部长度,如果没有扩展头部,就是tcp/udp数据的长度,最大64kb.
下一个头部(8):指定下一个扩展头部的存在性和类型。如59表示没有下一个。6表示tcp头部。
跳数限制(8):类似于生命周期

后面是:源ip(128位)目标ip(128)

你可能感兴趣的:(其他,tcp/ip,网络,网络协议)