写在前面:此文章持续更新,对计算机网络基础的学习进行复习总结。相关学习参考内容已列下方,目前水平有限,如有建议,欢迎指正!
References:
- B站:韩立刚老师主讲----计算机网络第五版
- 公众号:小浩算法----文章:计算机网络基础知识总结
- 书:计算机网络(第5版)谢希仁
- 黑马程序员
- 阿里云开发者学院
客户服务器方式(C/S)
Point 1
Point 2
Point 3
ping出来的是往返时间RTT(Roung-Trip Time),从发送方发送数据开始,到发送方收到接收方确认。
Point 4
OSI七层模型
应用层:能够产生网络流量、能够和用户交互的应用程序
表示层:加密、压缩
会话层:服务和客户端建立的会话(查木马,netstat -n(-nb))
传输层:可靠传输、不可靠传输、流量控制
网络层:IP地址编址、选择最佳路径
数据链路层:数据如何封装、添加物理层地址MAC
物理层:电压、接口标准
奈氏准则、香农公式
信道复用技术:频分复用、时分复用、码分复用、波分复用
数字传输系统:脉码调制PCM
数据链路层传输的是帧
该层的三个基本问题:封装成帧(加帧头帧尾)、透明传输、差错控制(误码率)
循环冗余检验CRC:二进制一组数,用除法,检验发错没发错的算法,不能纠错(若发错直接丢包)
PPP协议(点对点协议,Point-to-Point Protocol)
CSMA/CD协议(广播信道:总线上都能检测到)
半双工通信
以太网:载波监听多点接入/碰撞检测机制。CSMA/CD协议(半双工通信)。
以太局域网(以太网):在局域网中,硬件地址又称为物理地址,或MAC地址。
LAN就是局域网
VLAN就是虚拟局域网:一个VLAN = 一个广播域 = 一个网段
网络层向运输层提供虚电路服务(沿着某条路走)和数据报服务(加地址,不一定用哪条路)
网际协议IP
IPv4是32位2进制地址组成 (00000000–11111111) (0–255)
127.0.0.1 本地环回地址
IP地址与子网掩码(改子网掩码的1位;子网掩码0的对应的IP的位置是主机位)
MAC地址和IP地址的区别:IP地址决定了计算机数据包最终要给谁,MAC地址决定了下一跳给谁
网关是不同网络间通信(不同网段),网关的IP地址是具有路由功能的设备的IP地址
ICMP协议:pathping丢包情况、ping判断网络故障
RIP协议:动态路由协议
OSPF协议:动态路由协议(用的最短路径优先算法)
注:RIP、OSPF是自治系统内部用的协议,BGP协议连接各个自治系统
网络地址转换NAT(Network Address Translation)
netstat -n 查看会话
传输层:TCP、UDP
网络层:IP(RIP、OSPF、BGP)、ICMP、IGMP、ARP
应用层:HTTP、HTTPS、FTP、DNS、SMTP、POP3、RDP
从IP层来说,通信的两端是两个主机。但真正进行通信的实体是在主机中的进程,因此严格来讲,两个主机进行通信就是两个主机中的应用进程互相通信。
传输层的协议TCP或UDP加上端口就可以标识一个应用层协议,TCP/IP协议中的端口范围是从0~65535。
TCP协议(可靠传输、流量控制、网络堵塞)
端口号拼接到IP地址即构成了套接字
套接字(socket)=(IP地址:端口号)
TCP连接 {socket1, socket2} = { (IP1:port1), (IP2:port2) }
使用确认和重传机制(只要没告诉我收到,我就认为没收到,就要重发),这种可靠传输协议常称为自动重传请求ARQ(Automatic Repeat reQuest)。
流水线传输(提高信道利用率)。连续ARQ协议。
发送方维持发送窗口(只有确认了才往前滑,即滑动窗口)
以字节为单位的滑动窗口技术
确认号,收到了第几个字节,再给它改,如收到了1–4,确认号为5
丢包了,会重发,检测到不连续的证明丢了,收到后面的会留下,关键字里设置
Tips:超时重传时间应略大于上面得出的加权平均往返时间RTTs。
所谓流量控制(flow control)就是让发送方的发送速率不要太快,要让接收方来得及接收。
TCP缓存:协商接收窗口、发送窗口
改变窗口大小(rwnd设为0,对面发送窗口也变为0了,就停止发了)
所谓拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。
发送方维持拥塞窗口cwnd(congestion window)的状态变量。拥塞窗口的大小取决于网络的拥塞程度,并且动态地在变化。发送方让自己的发送窗口等于拥塞窗口。以后我们就知道,如果再考虑到接收方的接收能力,那么发送窗口还可能小于拥塞窗口。
慢开始:由小到大逐渐增大发送窗口,也就是说,由小到大逐渐增大拥塞窗口数值。
(慢开始门限ssthresh,即设置一个阈值,过了这个阈值从“慢开始”转为“拥塞避免算法”(拥塞避免即不成倍的增加cwnd大小),当出现拥塞时,cwnd重新设置开始慢开始算法,此时阈值也按某种规律降低)
快重传:接收方每收到一个失序的报文段后就立即发送重复确认,而不要等待自己发送数据时才进行捎带确认。
快恢复:拥塞后,以及调整ssthresh阈值后,不使用慢开始算法(即不设置cwnd为1),而是直接把cwnd值设置为ssthresh减半后的数值,然后再开始“拥塞避免算法”。
除此之外需要注意,发送窗口一定不能超过对方给出的接收窗口值rwnd。故发送窗口的值为cwnd和rwnd两个数的最小值。
ack确认号:服务器给客户端,告诉客户端该发第几个字。(三次握手时,第二次握手ack的x+1为32位的确认序号)(三次握手时,第三次握手客户端发一个ack=y+1表示32位确认序号)
ACK标志位 = 0:确认号无效;ACK = 1:确认号有效(应答)
SYN标志位 = 1:同步时用,与web建立会话(请求建立连接)
seq序号:这个数据段第一个字节,在整个文件的第几个字节。(三次握手时,第一次握手,seq的x为随机产生的32位序号)(三次握手时,第二次握手服务器端也需要发送连接请求,即此时SYN也为1,并产生随机32为序号seq=y)
FIN标志位:断开连接
进入data传输阶段,每次的数据发送都会携带ack确认序号保证安全。
每一个应用层协议,对应一个服务。
IP段格式中:
8位生存时间(TTL),最多能经过多少跳。(往下个路由节点一跳就减一)