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