[Learning]计算机网络笔记

  "程序员面试宝典中计算机网络部分的笔记"

Posted by Stephen.Ri on March 2, 2018

网络层次模型

  1. 应用层:DNS,TELNET,SMTP,HTTP

  2. 传输层(段/数据报):TCP,UDP

  3. 网络层(数据包):IPv4,IPv6

  4. 数据链路层(帧):Mac地址

  5. 物理层(比特)

TCP协议

TCP vs. UDP

  1. TCP是传输控制协议,提供的是面向连接,可靠的字节流服务。TCP提供了超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。

  2. UDP是用户数据报协议,是一个简单的面向数据包的运输层协议。

三次握手,四次挥手

三次握手

三次握手

  1. Client –> Server: SYN(同步序列号)能收到我吗?

  2. Server –> Client: ACK(应答)能收到哦! + SYN(同步序列号)你能收到我吗?

  3. Client –> Server: ACK(应答)我也能收到你哦!

四次挥手

  1. Client –> Server: FIN(结束)我传完了,要关闭了哦!

  2. Server –> Client: ACK(应答)好的哦!

  3. Server –> Client: FIN(结束)我也传完了,要关闭了哦!

  4. Client –> Server: ACK(应答)好哒!

TCP流量控制

TCP采用滑动窗口来实现流量控制。

如果发送方把数据发送得过快,接收方可能会来不及接收,这就会造成数据的丢失。所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。

滑动窗口

设A向B发送数据,发送方的发送窗口不能超过接收方给出的接收窗口的数值。 rwnd即滑动窗口大小,上图一共进行了3次流量控制。

TCP拥塞控制

拥塞控制:防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。拥塞控制所要做的都有一个前提:网络能够承受现有的网络负荷。拥塞控制是一个全局性的过程,涉及到所有的主机、路由器,以及与降低网络传输性能有关的所有因素。

慢启动与拥塞避免

发送方维持一个拥塞窗口即cwnd ( congestion window )的状态变量。拥塞窗口的大小取决于网络的拥塞程度,并且动态地在变化。发送方让自己的发送窗口等于拥塞。

拥塞控制

  1. 当TCP连接进行初始化时,把拥塞窗口cwnd置为1。

  2. 在执行慢开始算法时,拥塞窗口 cwnd 的初始值为1。拥塞窗口cwnd随着传输轮次按指数规律增长。当拥塞窗口cwnd增长到慢开始门限值ssthresh时(即当cwnd=16时),就改为执行拥塞控制算法,拥塞窗口按线性规律增长。

  3. 假定拥塞窗口的数值增长到24时,网络出现超时(这很可能就是网络发生拥塞了)。更新后的ssthresh值变为12(即变为出现超时时的拥塞窗口数值24的一半),拥塞窗口再重新设置为1,并执行慢开始算法。

快重传与快恢复

快重传算法首先要求接收方每收到一个失序的报文段后就立即发出重复确认(为的是使发送方及早知道有报文段没有到达对方)而不要等到自己发送数据时才进行捎带确认。

快重传

快重传算法还规定,发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段M3,而不必继续等待M3设置的重传计时器到期。

快恢复

与快重传配合使用的还有快恢复算法。当发送方连续收到三个重复确认,就执行“乘法减小”算法,把慢开始门限ssthresh减半。由于发送方现在认为网络很可能没有发生拥塞,因此把cwnd值设置为慢开始门限ssthresh减半后的数值,然后开始执行拥塞避免算法(“加法增大”),使拥塞窗口缓慢地线性增大。

IP协议

网络层通过路由选择算法,为IP分组从源主机到目的主机选择一条合适的传输路径,为传输层提供端-端数据传输服务。

IP协议的特点

  1. IP协议是一种无连接不可靠的分组传送服务的协议。

  2. IP协议是点-点的网络层通讯协议。

  3. IP协议屏蔽了互联的网络在数据链路层,物理层协议与实现技术上的差异。

IP分组分片

当IP分组的长度大于数据链路层MTU时,就必须对IP分组进行分片。

标准IP地址的分类

地址分类

划分子网的三级地址结构

三级地址结构即:网络号,子网号,主机号。

子网掩码

子网地址与主机号不能使用全0或者全1.

网络地址转换NAT

使用NAT技术可以实现IP地址重用,节约IP地址。

利用端口号

ICMP协议

IP协议的优点是简洁,但是缺少差错控制和查询机制。因此需要ICMP协议。

ICMP协议是网络层的一个协议,它的报文要封装成IP分组,然后传递给数据链路层,它是IP协议的一个组成部分。

  1. ICMP差错报告报文(单向):目的主机不可达,源主机抑制,超时,参数问题和重定向。

  2. ICMP查询报文(双向):回应请求和应答,时间戳请求和应答,地址掩码请求和应答,路由器询问和通告。

ping.exe原理是向指定的IP地址发送一定长度的数据包,按照约定,若制定的IP地址存在的话,会返回同样大小的数据包,当然,若在特定的时间内没有返回,就是“超时”。

ARP协议

从已知的IP地址找出对应的MAC地址的映射过程,需要地址解析协议(ARP)。

Socket编程

服务器端Socket

  1. 调用ServerSocket(int port)创建一个服务器端套接字,调用bind()绑定IP地址和端口。

  2. 启动一个死循环,循环中调用accept()来接受连接。

  3. 对于每个接受的连接,启动多线程处理,线程中调用send(),recv()发送和接收数据。

客户端Socket

  1. 调用Socket()创建一个流套接字。

  2. 调用connect()连接服务器。

  3. 调用send(),recv()发送和接收数据。

网络安全问题

入侵检测和防火墙

  1. 防火墙:能增强机构内部网络的安全性,用于加强网络间的访问控制,防止外部用户非法使用内部网的资源,保护内部网络的设备不被破坏,防止内部网络的敏感数据被窃取。但是防火墙对发生在内网的攻击无能为力。

  2. 入侵检测:扫描当前网络的活动,监视和记录网络的流量,根据定义好的规则来过滤从主机网卡到网线上的流量,提供实时报警。但是入侵检测主要停留在异常检测统计方法和误用检测方法上,仅仅试图发现计算机网络中的安全问题。

  3. 防火墙相当于一栋大楼外的门卫系统入侵检测相当于大楼内的监控系统

路由器 vs. 交换机

路由器的工作原理

  1. 路由器接收到数据包,提取目标IP地址及子网掩码计算目标网络地址;

  2. 根据目标网络地址查找路由表,如果找到目标网络地址就按照相应的出口发送到下一个路由器;

  3. 如果没有找到,就看一下有没有默认路由,如果有就按照默认路由的出口发送给下一个路由器;

  4. 如果没有找到就给源IP发送一个出错ICMP数据包表明没法传递该数据包;

  5. 如果是直连路由就按照第二层MAC地址发送给目标站点。

交换机的工作原理

  1. 交换机根据收到数据帧中的源MAC地址建立该地址同交换机端口的映射,并将其写入MAC地址表中。

  2. 交换机将数据帧中的目的MAC地址同已建立的MAC地址表进行比较,以决定由哪个端口进行转发。

  3. 如数据帧中的目的MAC地址不在MAC地址表中,则向所有端口转发。这一过程称为泛洪(flood)。

  4. 广播帧和组播帧向所有的端口转发。