这篇文章紧用于本人在复习时候使用的,其中有很多地方省略
物理层:
主要功能是:传输01比特流
介质:网线,光纤,同轴电缆,无线等等
中间设备:转发器
数据链路层:
主要两种信道:1.点对点信道 (拨号上网isp[网络服务提供商])2.广播信道
第一个对应ppp协议(ppp帧) 第二个是CMDA/CD(载波接听/多点接入 mac帧 半双工:要么接受要么发送不能同时进行)
三个基本问题:封装成帧,透明传输,差错检测
封装成帧:数据格式是帧 帧界定符为:soh(0000 0001) eot(0000 0100)
透明传输:相当于是:如果数据中有控制字符的帧界定符,会将这个帧界定符插入一个转义字符 'esc' (0x1B)
使数据可以正确通过数据链路层传输(如果数据中有帧界定符,也能传输)
差错控制:这个帧在传输的过程中是否发生改变 使用CRC(循环冗余检测) 就是 在比特流后面添加一个冗余码
冗余码的长度=除数的长度-1 冗余码=比特流S/除数P
crc如何检验:发送端添加后发到接收端 如果接受端将接收到的比特流除S以除数P余数为0,就是对的
可靠传输:传输的数据都是真确的,如果不正确就重传知道正确为止
出错情况:1.比特流出错 CRC
2.帧丢失,帧重复,帧失序
添加帧编号,确认,重传机制
现在有 [1],[2],[3]个帧
帧丢失:[1][3] 帧重复[1][1][2][3] 帧失序[1][3][2]
区分对待 通信质量不好用 确认和重传机制, 通信质量强 不用确认和重传机制
其他:适配器网卡的时钟频率没有与比特流的频率同步,所以需要适配器网卡的时钟频率和比特流一样,
所以就在帧前面插入8个字节,同步时钟频率 前七个为同步码 第八个为帧开始界定符
中间:网桥(过滤mac帧,转发表[ mac地址,接口 ] 一般为2个接口),交换机(多个接口的网桥)等等
扩展网络: 集线器:能扩展 但会引发更大的冲突域 (一条线上同时只能有一个主机发信号)
网桥: 能扩展,可以连接不同速率的网路 但不能控制流量,当流量大了,缓冲区就会丢mac帧,造成速率下降
网际层(ip):
提供数据报,选择路由
arp协议(地址解析):将ip地址转化为mac地址,流程是:假如A主机想要找B主机的mac地址,A主机就会在局域网内广播说
我的 (ip地址为: 192.168.2.3, mac地址为:00:0A:0B:04:07:09) 想要找B主机的mac地址,
他的ip为:192.168.2.5,当B主机收到这个信息时,看到ip地址和自己的一样就会对A说我的是你要找的主机
并告诉A,自己的mac地址
ICMP(网际控制报文协议 ):提高ip数据报的交互成功的机会,检查到目的地址是否通畅(不需要通过传输层),
也可以用于路径跟踪(从A到B经过哪些路由器节点)
ip类型 A:0 B:10 C:110 D:1110 E:1111
网络号,子网号,主机号 子网掩码 超网
分组:有
标识(2字节): 确认属于哪一次的ip数据的 如有 1 个ip数据 分成3个分组 这个ip数据标识为3
那么 3个分组都为3 ,这要才知道他们是属于一个ip数据
MF (3位):确认是否为最后一个分组,0位最后一个,1为不是
偏移(13位):确认一个数据分组为一个ip数据的第几个分组
VPN和NAT(网络地址转化)
NAT出现:ip地址数量不够,所以局域网中可以 使用一个或几个公有ip去上网
转化表:局域网ip,目的ip 经过nat软件 局域网ip->公有ip,目的ip
有些时候还是不行,因为局域网主机多,公有ip还是不够,所以加上端口(port)
NAPT(网路地址和端口转化)
转化表:局域网ip:port1,目的ip 经过napt软件 局域网ip:port1->公有ip:port2 , 目的ip
路由器:存错和转发 转发表(网络号,子网掩码,接口)
传输层(tcp/udp):
停止等待协议,ARQ协议,滑动窗口,流量控制,拥塞控制和连接管理
可以使将数据传输到对一个的应用进程(通过端口)
tcp:可靠传输,面向连接的,udp:不可靠传输(尽最大努力交付)
停止等待协议:当A主机发送一个tcp数据到B主机,就停止发送等待B主机发送确认回来,A主机会以一个超时重传
ARQ(自动重传请求):
先了解:tcp中的格式中的一个名词:序号seq(4字节)发送的第一个数据的序号
确认号ack(4字节):期望对方发送的一个数据的序号
确认ACK:ACK=1有效,ACK=0无效
同步SYN :SYN=1同步 SYN=1和ACK=0请求同步,回应SYN=1和ACK=1
窗口(2字节):控制滑动窗口的大小
种植FIN:FIN=1释放连接
滑动窗口:(tcp以字节为单位):提高传输效率,A将窗口内的数据发送给接收端B,B之后确认最后一个 比如:窗口长度为4,
A发送[1][2][3][4] 而B只接受到了[1][2][3],就会向A发送确认3的序号,A主机就会从[4]开始
[4][5][6][7] 发给B
流量控制:通过接收方发送窗口大小从而控制流量的大小 (标识符为:rwnd)
拥塞控制:通过发送方控制拥塞窗口,如何判断是否拥塞,通过请求的延迟,如果出现很连续多次发送方收不到的确认,
可以确认现在网路拥塞(cwnd 标识符)
连接控制:
tcp三次握手:
A 发送 SYN=1,seq=x 给b 此时A为syn-sent
然后:B发送SYN=1,ACK=1,ack=x+1,seq=y 此时B为:syn-revd
然后: A发送ACK=1,ack=y+1,seq=x+1 给B 实现同步
为什么要A最后发送一次给B了?
因为:如果二次握手的话有一种情况 A发送同步y1给B,但y1由于网络的原因阻塞到某个地方,A没有收到回复又发送了一个
同步y2给B,此时B收到然后发送给A同步,那么A和B就同步起来了。A和B完成数据传输断开连接。如果y1没有被丢弃,
此时y1的网路恢复了,那么y1发送给B,B以后A又要同步,就给A发送同步,A收到想我没有发同步啊就拒收,
没有消耗A的资源,但B会消耗资源等待A发送数据,所以需要三次握手
四次挥手:
A主机发送 FIN=1,seq=u 给B 此时A为等待关闭1
然后:B主机发送ACK=1,ack=u+1,seq=v 给A 此时B为关闭等待,A为关闭等待2
然后: B主机在发送FIN=1,ACK=1,ack=u+1,seq=w给A 此时B为最后确认
然后:A主机发送ACK=1,ack=w+1,seq=u+1给B B主机关闭,A主机等待平均单向传输时间的2倍后关闭
为什么要2倍时间:
1.保证轨后一个ACK能到到B
应用层:
确定进程通信的规则:如石头剪刀布,规则是:石头大于剪刀,剪刀大于步,步大于石头