Internet 协议就是ip协议
工作在网络层,数据包单位package
非面向连接 (就谈不上三次握手,四次挥手)
独立处理数据包
分层编址(ip地址分成两个部分)(类似mac地址,一部分是ieee厂商编号,一部分是网卡设备唯一标识,厂家分配的)
尽力而为的传输(尽力,不能确保数据一定能到达,类似快递,有可能中间丢了)
无数据恢复功能ip协议没有 但是tcp有,有一个协议有恢复功能就行,能满足工作中的一些需求
分成两部分,固定部分和可变部分,tcp固定必须有的头部是20个字节,其他是可选项
固定部分是5行,每一行32位,8位一个字节,就是4个字节,5行也是20个字节
版本号 0-3 (4位,现在用的是ipV4,第四个版本,采用的地址是32位,源地址和目标地址,所有的地址加起来也就2的32次方,42亿个地址,现在的地址根本不够,所以现在互联网的有用ipv.6 长度远远大于32位,它是128位 的地址,2的128次方,但是分配权(欧美的发达国家)不是你说了算的,打仗了,就不给你地址了。
中国发明了ipv9传说,ipv9中国人发明的可以达到256位,最长可以扩展到2048位)
ipv6的地址是基于16进制数写的首部长度
区分服务,区分系统特定应用的关键字,
总长度,数据包的总长度
标识,大的包切成小的包,标识一样说明来自同一个包,不一样就不是一个包
片偏移,告诉来自这个打包的,第几个小包
标志,标记的包是有一个包切片切出来的,还是整个包,还能区分,拆三个,如果是最后一个包也能知道,
DF=0,就代表允许大包分小包
MF=1表示后面还有分片,MF=0表示是最后一个包
这里的数据是,里面加上应用层,传输层,以太网帧,internet层的报文头部,
是包含传输层和应用层头部的
大小达到3000,按照以太网帧的大小需要拆三个
现在就切片了
前三个包都是大包其出来的,所以表示应该都是22977
标识,最高位无用,DF=0表示允许分片,这个包是由小包组成的,MF=1表示还有包
TTL time to live 生存期
以经给的路由器为单位,经过一个路由器减一个
windows有tracert 可以看到到达网站需要经过几个路由器
生命值为0的包就会抛弃掉,linux可以调整生命期
这样就可能认为你是windows机器协议,上层协议,下层协议为上层协议提供服务,ip协议属于internet层,上一层是传输层(TCP,UDP)
ssh走的是tcp协议 tcp6上层协议的类型
这里就有对应上层协议
怎么将十进制数变成2进制,一般都是除2取余
输出为22进制格式
输入2进制,输出10进制
linux下有存放每种协议的编号
网络,我想和远程192.168.3.2连接成一个可靠连接 reliable 可靠的
传输层:因为需要可靠的,就需要用tcp
传输层:tcp协议,我要和192.168.3.2建立一个会话
tcp ,建立第一次握手,syn
网络层 有源地址目标地址 传输层有同步位 SYN
数据链路层
得到mac就需要用到ARP
到达数据链路层之后,需要添加 数据联络层的源mac和目标mac
目标mac未知,所以请arp帮忙
先找arp表格,如果没有记录只能广播
我是3。1 我的mac是什么,,现在我想要3.2的mac地址是什么
到达目标
到达目标之后,目标回应
处理一下,arp请求
**
右边的会把左边机器的ip地址和mac地址记录在内存里,下次访问就不会询问了
回应,自己的mac地址,和刚才收到的左边的mac地址
arp是广播发出,请求是广播,回应是单播
数据回来之后,就可以把对方的mac地址写到内存表里
数据回来之后,就可以把对方的mac地址写到内存表里
现在就把目标地址,源地址的数据都全了
同步位就数据完整,可以往右边发送了
**、数据包到达对方以后,对方要每层把信息解包
三次握手结束
会话建立起来,可以发送数据
加上tcp seq=3 编号
目标地址源地址
在数据链路层把数据链路层删掉,
网络层删掉网络层
最终得到数据通讯
ip地址,目前用的ipv4是32位的地址,是一个32位的2进制数字,
唯一性并不是使用IP地址的理由,因为ip地址有一些特性,如果用唯一的MAC地址,顶多知道是哪个厂家生产的,IP地址可以确认是在哪个网络的位置,因为IP两部分组成:
网络ID和主机ID
路由器隔开,有三个网段编号,这个就是网络ID
A类,前8位是网络ID
B类,前16位是网路ID
C类,前24位是网路IDw
D类,不能给计算机分配,代表多播地址
网络ID相同,就在一个网段里
如果是A类地址,前8位是网络ID,这两个就在一个网段内,
A类的网段1-126,125个网段,要把0 和127排除
w
后面的24位是主机ID,2^24-2,因为要把特殊的排除,10.0.0.0代表网段,10.255.255.255代表网段的广播
1600多万的机器,相当于庞大的广播域
前面两个10不能动,前16位
1000 0000 0000 0000 128
1011 1111 191
128-191之间就属于B类地址
C类前24位是网路ID,其中前三位110不动
1100 0000 0000 0000 192
1101 1111 223
127和0是无效的
B类地址存放主机数,2^16-2 65344
c类 2^8-2 254
8.8.8.8是google DNS地址
1.1.1.1 是澳大利亚地址、
ABCD划分地址有点粗放,要么1600多w,要么6万,所以一般我们划分都是自由分类,CIDR无类域间路由