tcp/ip 学习记录 网络接口层 网络互联层
网络分层:应用层(Date + 应用协议)、传输层(.. + tcp/udp)、网络互联层(.. + ip)、网络接口层(.. + mac)
上面括号内的协议只是代表协议,其实还有更多的选择
以太网帧体格式:目标mac(6)、源mac(6)、类型(2)、数据(46-1500)、FCS(4)
网络拓扑:网络的连接和构成的形态称为网络拓扑。
MAC地址也不总是唯一的,即使MAC地址相同,只要不在同一个数据链路就不会出现问题。
半双工:只发送或指接受的通信方式。
全双工:允许在同一时间既可以发送数据也可以接收数据。
私有网络ip:
10.0.0.0 ~ 10.255.255.255 (10.0.0.0/8) A类
172.16.0.0 ~ 172.31.255.255 (172.16.0.0/12) B类
192.168.0.0 ~ 192.168.255.255 (192.168.0.0/16) C类
在此之外的则是全局ip,全局ip地址基本上要在整个互联网范围内保持唯一,但私有地址不需要。
在数据发送过程中需要类似于"指明路由器或主机",以便真正发往目标地址。保存这种信息的就是路由控制表。
默认路由:指路由表中任何一个地址都能与之匹配的记录。
ip隧道:在网络层的首部后面继续追加网络层首部的通信方式。
ip报文的分片与重组:
经过分片的ip数据报在被重组的时候,只能由目标主机进行。路由器虽然做分片但不会进行重组。
如果在TCP中采用了路径MTU发现,IP层则不会再进行分片处理。
ipv4首部(通常为20 bytes):
字段 | 长度 | 意义 |
版本(Version) | 4bit | 表示ip首部的版本号 |
首部长度(Internet Header Length) | 4bit | 表示ip首部大小,单位为4字节,没有可选项Options时,ip首部为20字节,最大60字节 |
区分服务(Type of Services) | 8bit | 表明服务质量 |
总长度(Total Length) | 16bit | ip首部 + 数据部分 结合起来的总字节数,最大65535字节 |
标识(Identification) | 16bit | 该字段和Flags和Fragment Offest字段联合使用,对较大的上层数据包进行分片(fragment)操作。路由器将一个包拆分后,所有拆分开的小包被标记相同的值,以便目的端设备能够区分哪个包属于被拆分开的包的一部分 |
标志(Flags) | 3bit | 包被分片的相关信息 |
片偏移(Fragment Offset) | 13bit | 用来标识被分片的每一个分段相对于原始数据的位置,表示该IP包在该组分片包中位置,接收端靠此来组装还原IP包 |
生存时间(TTL:Time To Live) | 8bit | 可以中转多少个路由器,每经过一个路由器减一,直到变成0则丢弃 |
协议(Protocal) | 8bit | 表示ip首部的下一个首部隶属那个协议 |
首部校验和(Header Checksum) | 16bit | 用来做IP头部的正确性检测,但不包含数据部分。 因为每个路由器要改变TTL的值,所以路由器会为每个通过的数据包重新计算这个值 |
源地址(Source Address) | 32bit | 发送端ip |
目标地址(Destination Address) | 32bit | 接收端ip |
可选项(Options) | 变长 | 通常只在进行实验或诊断时使用 |
填充(Padding) | 变长 | 在有可选项Options的情况下,首部长度可能不是32bit的整数倍,此时填充0来调整为32bit的整数倍 |
数据(Date) | 变长 | data + tcp/udp头 |
一些网络层的协议:
ARP(网络层协议):以目标ip为线索,用来定位下一个应该接收数据分包的网络设备对应的mac地址。
RARP:从mac地址定位ip的一种协议。
ICMP(网络层):确认ip包是否成功送达目标地址,通知在发送过程当中ip包被废弃的具体原因,改善网络设置等。
在ip通信中如果某个ip包因为某种原因未能达到目标地址,那么这个具体的原因将由ICMP负责通知。
TCP/IP中,在网络层和网络层以上的所有协议都要用IP来传输,虽然是同一层,ICMP也要用IP来传输。
NAT(Network Address Translator):是用于在本地网络中使用私有地址,在连接互联网时转而使用全局ip地址的技术。
在NAT路由器的内部,有一张自动生成的用来转换地址的表(取出ip首部中的源地址进行转换)。
除转换ip之外,还有能转换TCP、UDP端口号的NAPT(Network Address Ports Translator)技术。
NAT的潜在问题:
1、无法从NAT的外部向内部服务器建立连接。
2、转换表的生成与转换操作都会产生一定的开销。
3、通信过程中一旦NAT遇到异常需要重新启动时,所有的TCP链接都将被重置。
4、即使备置两台NAT做容灾备份,TCP连接还是会被断开。
推荐阅读
-
tcp/ip 学习记录 网络接口层 网络互联层
-
tcp/ip 学习记录 传输层
-
OSI七层参考模型与TCP/IP五层参考模型、数据的封装、网络服务的讲解
-
[HTTP] tcp/ip详解 链路层 网络层 传输层 应用层
-
TCP/IP笔记二.网络层(2)——ICMP,RIP,OSPF,BGP
-
TCP/IP笔记 二.网络层(1)——IP,子网,CIDR
-
网络初步认识(TCP/IP五层模型及网络字节序)
-
软件开发架构介绍||OSI七层协议之物理层、数据链路层、网络层、传输层(mac地址、ip协议、断开协议、tcp协议之三次握手四次挥手)
-
OSI七层与TCP/IP五层网络架构详解
-
[TCP/IP] 网络层ARP协议