最近把《计算机网络》大致翻了一遍,主要是看了网络层往上的部分,包括网络层,运输层,应用层的一些协议和实现,还有一些网络安全,流媒体服务,无线网络等的介绍。对于应用开发,再往下的数据链路层和物理层也没太大的意义去研究。

网络层

网络层向上提供无连接的,尽最大努力交付的数据报服务。
网络层负责端到端的。
网络层主要是围绕IP来进行的,与IP协议配套使用的包括ARP:地址解析协议,ICMP:网际控制报文协议,IGMP:网际组管理协议。
IP地址的编码方式主要有:分类的IP地址,子网划分(CIDR),构成超网。
网络层通过ARP协议将IP转换为数据链路层使用的物理mac地址。
IP数据报的首部包括源地址,目的地址,总长度,生存时间等信息。
路由器选择协议主要有RIP和OSPF,前者是基于距离向量的选择协议,间隔具体时间和相邻路由器交换路由信息,信息包括当前路由表(最短距离)和下一跳地址。OSPF是分布式链路状态协议,只有链路状态改变才使用泛洪法发送与所有相邻路由器的链路状态信息,信息包括本路由器于哪些路由器相邻和连接的”代价”。

运输层

运输层负责端口到端口的通信。
熟悉的TCP/UDP是运输层的重要协议。
UDP

  • 无连接
  • 尽最大努力交付,不保证可靠交付
  • 面向报文:应用层交给UDP多大的报文,保留边界发送,如果过长,IP层负责分片。
  • 没有拥塞控制
  • 支持一对多,多对一,一对一的交互通信
  • 部首小(源端口,目的端口,长度,检验和)

TCP

  • 面向连接(建立连接-通信-释放连接)
  • 只能是点对点
  • 提供可靠交付(无差错,不丢失,不重复,按序到达)
  • 提供全双工通信
  • 面向字节流

为保证可靠传输,使用以下协议:

  • 停止等待协议(效率低)
  • 连续ARQ和滑动窗口

部首:

  • 源端口和目的端口
  • 序号:面向字节流,每一个字节都按顺序编号
  • 确认号:期望收到对方下一个报文段的第一个字节的序号
  • 数据偏移:也就是首部长度
  • 紧急URG:尽快发送
  • 确认ACK
  • 推送PSH
  • 复位RST
  • 同步SYN
  • 终止FIN
  • 窗口:接收方允许对方发送的数据量
  • 校验和
  • 紧急指针
  • 选项
    以字节为单位的滑动窗口,三个指针描述
    拥塞控制:慢开始,拥塞避免,快重传。
    TCP建立连接的三次握手,最后一次确认是为了防止已失效的连接建立请求。
    释放连接的四次握手

应用层

面向应用进程
DNS域名解析:递归查询,迭代查询
FTP文件传输协议
TELNET远程终端协议
HTTP协议
SMTP简单邮件传送协议

网络安全

被动攻击和主动攻击

对称密钥
DES,IDEA
公钥密码
数字签名:报文鉴别,报文完整性,不可否认
SSL/TLS连接建立