计算机网络概要及工程线网问题优化实践
一. TCP/IP协议体系的认知
- 物理层(比特流):设备之间比特流的传输,物理接口,电气特性等
- 数据链路层(帧):将上层地址封装成帧,用MAC地址访问媒介,错误检测与修正
- 网络层(包):提供逻辑地址(IP)、选路、数据从源端到目的端的传输
- 传输层(段):实现网络不同主机上用户进程之间的数据通信,可靠与不可靠的传输,传输层的错误检测、流量控制等
- 会话层(数据):提供包括访问验证与会话管理在内的建立和维护应用之间通信的机制,如服务器验证用户登陆
- 表示层(数据):主要解决用户信息的语法表示问题,如加密解密
- 应用层(数据):确定进程之间通信的性质以满足用户需要
二. 链路层
1. 以太网帧的格式
2. ARP协议和RARP协议
-
作用:为IP地址到对应硬件地址提供动态映射
-
高效运行关键:每个主机上都有一个ARP高速缓存
-
ARP报文格式:总共28字节
-
缺点:
- 缓存:主机的地址映射时基于高速缓存的,动态更新的。地址刷新有时间限制。可以在下次更新之前修改计算机上的地址缓存,造成拒绝服务攻击或者ARP欺骗
- 广播:攻击者可以伪装ARP应答
- ARP应答没有认证:可以在不接受到请求时就发出应答包
-
ARP代理的概念和应用场景
- 概念:若ARP请求是从一个网络的主机发送给另一个网络的主机,那么连接这两个网络的路由器就可以回答该请求,这个过程称为ARP代理。ARP代理路由器响应ARP请求的MAC地址为路由器的MAC地址,而非ARP请求的主机的MAC地址。
- 应用场景:两个物理网络之间的路由是使用相同的网络号,两个路由器设置称ARP代理,实现相互隐瞒物理网络
三. 网络层
1. IP协议
- IP的不可靠和无连接
- 不可靠:指不能保证数据报能成功到达目的地。
- 发生错误时,丢弃该数据包,发送ICMP消息给信源端。可靠性由上层提供
- 无连接:IP不维护关于后续数据报的状态信息
- 体现在,IP数据可以不按顺序发送和接受。A发送连续的数据报,到达B不一定时连续的,来回路由选择可能不一样,路线也不一样,达到先后顺序也不一样
- 不可靠:指不能保证数据报能成功到达目的地。
- IP报文格式
- IP路由选择过程:根据最长匹配原则,找到条目,发送到指定的路由器。如果不能找到,返回“主机不可达”、“网络不可达”错误
- IP路由选择特性:
- IP路由选择时逐跳进行的
- 为一个网络指定一个路由器,而不是为每个主机指定一个路由器
- IP搜索路由表的步骤:搜索匹配的主机地址–>搜索匹配的网络地址–>搜索默认选项
- 如果路由表中默认项,而又没有匹配项,处理过程:
- 结果取决于该数据报是主机产生的还是被转发的
- 如果数据报是由本机产生的,那么就给发送该数据的应用程序返回一个差错,或者是“主机不可达”差错,或者是“网络不可达差错”
- 如果是被转发的数据报,就给原始发送一份ICMP主机不可达的差错报文
- IP地址分类,如何划分,及各类地址支持的主机数
- A类地址:首位为0,1.0.0.1~~126.255.255.254;主机号24位
- B 类地址:首位为 10,128.0.0.1~~191.255.255.254;主机号 16 位
- C 类地址:首位为 110,192.0.0.1~~223.255.255.254;主机号 8 位
- D 类地址(多播地址,也叫做组播地址):首位为 1110,224.0.0.1~~239.255.255.254
- E 类地址:此类地址是保留地址,首位为 11110,240.0.0.1~~254.255.255.254
1. ICMP协议
- ICMP的层次和作用:一般认为是在三层的。主要传递一些差错报文和其他需要注意的信息
- ICMP 报文的分类:ICMP 分为两类,一类是 ICMP 查询报文,另一类是 ICMP 差错报文。
- Ping 命令的具体过程
四. 传输层
1. UDP协议
- UDP 和 TCP 的简单介绍:
- UDP 是一个简单的面向数据报的运输层协议:进程的每个输出操作都正好产生一个 UDP 数 据报,并组装成一份待发送的 IP 数据报
- TCP 是面向流字符,应用程序产生的全体数据与真正发送的单个 IP 数据报可能没什么联系
- UDP 报头字段和含义
2. TCP协议
-
TCP 通过哪些方式来保证可靠性
- 应用数据被分割成 TCP 认为最适合发送的数据块
- 确认机制,发送报文后,等待确认
- 重发机制,没有收到确认,将重发数据段
- 保持它首部和数据的校验和。确认数据的准确性
- 排序,丢弃重复的,流量控制
-
TCP 与 UDP 的概念相互的区别及优劣
- TCP 面向连接,UDP 面向无链接
- TCP 面向字节流,UDP 面向报文格
- TCP 提供可靠传输服务(数据顺序、正确性),UDP 传输不可靠
- TCP 协议传输速度慢,UDP 协议传输速度快
- TCP 协议对系统资源要求多(头部开销大),UDP 协议要求少
-
为什么要 3 次握手,4 次挥手
- 3 次握手:防止已过期的连接请求报文突然又传送到服务器,因而产生错误
- 4 次挥手:确保数据能够完成传输,但关闭连接时,当收到对方的 FIN 报文通知时,它
仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你可以 未必会马上会关闭 SOCKET,也即你可能还需要发送一些数据给对方之后,再发送 FIN 报文 给对方来表示你同意现在可以关闭连接了,所以它这里的 ACK 报文和 FIN 报文多数情况下 都是分开发送的
-
TCP 的4种流量控制机制
- 慢启动(慢开始)
- 慢开始不是指 cwnd 的增长速度慢(指数增长),而是指 TCP 开始发送设置 cwnd=1
- 思路:不要一开始就发送大量的数据,先探测一下网络的拥塞程度,也就是说由小到大 逐渐增加拥塞窗口的大小。这里用报文段的个数的拥塞窗口大小举例说明慢开始算法,实时 拥塞窗口大小是以字节为单位的
- 为了防止 cwnd 增长过大引起网络拥塞,设置一个慢开始门限(ssthresh 状态变量):
当 cnwd<ssthresh,使用慢开始算法
当 cnwd=ssthresh,既可使用慢开始算法,也可以使用拥塞避免算法
当 cnwd>ssthresh,使用拥塞避免算法
- 拥塞避免
- 拥塞避免并非完全能够避免拥塞,是说在拥塞避免阶段将拥塞窗口控制为按线性规律增 长,使网络比较不容易出现拥塞
- 思路:让拥塞窗口 cwnd 缓慢地增大,即每经过一个往返时间 RTT 就把发送方的拥塞控 制窗口加一
- 无论是在慢开始阶段还是在拥塞避免阶段,只要发送方判断网络出现拥塞(其根据就是没有 收到确认,虽然没有收到确认可能是其他原因的分组丢失,但是因为无法判定,所以都当做 拥塞来处理),就把慢开始门限设置为出现拥塞时的发送窗口大小的一半。然后把拥塞窗口 设置为 1,执行慢开始算法。 如图所示:
- 快速重传
- 快重传要求接收方在收到一个失序的报文段后就立即发出重复确认(为的是使发送方及 早知道有报文段没有到达对方)而不要等到自己发送数据时捎带确认。快重传算法规定,发 送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段,而不必继续等待设 置的重传计时器时间到期
- 由于不需要等待设置的重传计时器到期,能尽早重传未被确认的报文段,能提高整个网 络的吞吐量
- 快速恢复
- 当发送方连续收到三个重复确认时,就执行“乘法减小”算法,把 ssthresh 门限减半。 但是接下去并不执行慢开始算法
- 考虑到如果网络出现拥塞的话就不会收到好几个重复的确认,所以发送方现在认为网络 可能没有出现拥塞。所以此时不执行慢开始算法,而是将 cwnd 设置为 ssthresh 的大小, 然后执行拥塞避免算法
五. 网络层
1. DNS
- 概念:域名解析,www.xxx.com 转换成 ip,能够使用户更方便的访问互联网,而不
用去记住能够被机器直接读取的 ip 地址。DNS 协议运行在 UDP 协议之上,使用端口号 53 - 主机解析域名的顺序:
- 浏览器缓存
- 找本机的 hosts 文件
- 路由缓存
- 找 DNS 服务器(本地域名、顶级域名、根域名):迭代查询、递归查询
2. HTTP
- HTTP请求格式
- HTTP响应格式
- GET、POST 区别
- Cookies 和 Session 的区别
- cookie 是一种发送到客户浏览器的文本串句柄,并保存在客户机硬盘上,可以用来在 某个 WEB 站点会话间持久的保持数据
- session 其实指的就是访问者从到达某个特定主页到离开为止的那段时间。 Session 其实是利用 Cookie 进行信息处理的,当用户首先进行了请求后,服务端就在用户浏览器 上创建了一个 Cookie,当这个 Session 结束时,其实就是意味着这个 Cookie 就过期了
- cookie 数据保存在客户端,session 数据保存在服务器端