TCP/IP 读书笔记

概述

  • TCP/IP 分四层:链路层、网络层、运输层、应用层
  • 传输协议:TCP (传输控制协议)、UDP(用户数据报协议)
  • 各类IP地址范围
类型 范围
A 0.0.0 - 127.255.255.255
B 128.0.0 - 191.255.255.255
C 192.0.0 - 223.255.255.255
D 224.0.0 - 239.255.255.255
E 240.0.0 - 247.255.255.255
  • TCP和UDP采用16bit端口号识别应用程序
  • 知名 TCP/IP 端口1~1023之间:FTP(21)、Telnet(23)
  • 多数 TCP/IP 临时端口分配 1024-5000之间
  • Unix下/etc/services包含了熟知的端口号
  • 网络层(IP)提供点到点的服务,运输层(TCP/UDP)提供端到端的服务
  • 使用 TCP/IP 协议的应用程序通常采用两种应用编程接口(API):socket 和 TLI(运输层接口:Transport Layer Interface)。前者有时称作 “Berkeley socket”

链路层

以太网和IEEE 802封装
  • 链路层三个目的
  1. 为 IP 模块发送和接收 IP 数据报
  2. 为 ARP 模块发送 ARP 请求和接收 ARP 应答
  3. 为 RARP 发送 RARP 请求和接收 RARP 应答
  • 当今 TCP/IP 采用的主要局域网技术为 以太网,采用一种称作 CSMA/CD 的媒体介入方法
  • 802.3针对整个 CSMA/CD 网络、802.4针对令牌总线网络、802.5针对令牌环网络

IP:网际协议

不可靠:不保证 IP 数据报能成功到达目的地。错误处理算法:丢弃该数据报之后发送 ICMP 消息给信源端

无连接:IP不维护任何关于后续数据报的状态信息。

TTL(time-to-live)生存时间字段设置了数据报可以经过的最多路由器数。通常由源主机设置(通常为32或64),经过一个路由,值减1,为0时,数据报呗丢弃,并发送ICMP报文通知源主机

IP首部始终是32 bit 的整数倍

  • 为一个网络指定一个路由器,而不必为每个主机指定一个路由器,这是IP路由选择机制的另一个基本特性
  • 子网寻址,A类、B类分配容纳主机数为2的24次方-2和2的16次方-2
  • 点对点链接始终会带来问题,因为它一般在两端都需要IP地址

ARP:地址解析协议

  • ARP 为 IP 地址到对应的硬件地址之间提供动态映射。
  • 在 ARP 背后有一个基本概念,那就是网络接口有一个硬件地址(一个48 bit的值,标识不同的以太网或令牌环网络接口)。
  • ARP 的功能是在32 bit的IP地址和采用不同网络技术的硬件地址之间提供动态映射。
  • ARP 高效运行的关键是由于每个主机上都有一个 ARP 高速缓存,存放了最近 Internet 地址到硬件地址之间的映射记录,每一项的生存时间一般为20分钟
  • ARP 请求或应答来说,帧类型的值为0x0806
  • 操作字段指出四种操作类型,它们是 ARP 请求(值为1)、ARP 应答(值为2)、RARP 请求(值为3)和 RARP 应答(值为4)
  • 由于 ARP 请求或回答的数据帧长都是42字节(28字节的ARP数据,14字节的以太网帧头,因此,每一帧都必须加入填充字符以达到以太网的最小长度要求:60字节。
  • 大多数的 BSD 实现把完成 TCP 连接请求的时间限制设置为75秒

RARP:逆地址解析协议

  • RARP 协议是许多无盘系统在引导时用来获取 IP 地址的
  • RARP 请求或应答的帧类型代码为0x8035,而且 RARP 请求的操作代码为3,应答操作代码为4
  • RARP 请求以广播方式传送,而 RARP 应答一般是单播(unicast)传送的

ICMP:Internet 控制报文协议

  • ICMP 经常被认为是IP层的一个组成部分。它传递差错报文以及其他需要注意的信息。ICMP 报文通常被IP层或更高层协议(TCP或UDP)使用。一些 ICMP 报文把差错报文返回给用户进程。
  • ICMP 报文是在 IP 数据报内部被传输的

Traceroute 程序

  1. 开发 Traceroute 程序的原因:
  • 在IP首部选项字段中最多只能存放9个IP地址,不能存放当前大多数的路径
  • Traceroute 程序只需要目的端运行一个UDP模块—其他不需要任何特殊的服务器应用程序
  1. Traceroute 输出
  • 输出的第1个无标号行给出了目的主机名和其IP地址,指出 traceroute 程序最大的TTL字段值为30。40字节的数据报包含20字节IP首部、8字节的 UDP 首部和12字节的用户数据(12字节的用户数据包含每发一个数据报就加1的序列号,送出 TTL 的副本以及发送数据报的时间)
  • 使用 traceroute 程序的-g选项,可以为宽松的源站选路指明一些中间路由器

IP选路

  • IP 执行选路机制,而路由守护程序则一般提供选路策略。

netstat

对于一个给定的路由器,可以打印出五种不同的标志(flag):

  1. U 该路由可以使用。
  2. G 该路由是到一个网关(路由器)。如果没有设置该标志,说明目的地是直接相连的。
  3. H 该路由是到一个主机,也就是说,目的地址是一个完整的主机地址。如果没有设置该标志,说明该路由是到一个网络,而目的地址是一个网络地址:一个网络号,或者网络号与子网号的组合。
  4. D 该路由是由重定向报文创建的(9.5节)。
  5. M 该路由已被重定向报文修改(9.5节)。
  • 对于点对点链路和环回接口来说,路由是到达主机(例如,设置H标志)。对于广播接口来说,如以太网,路由是到达网络。
  • 路由表项的内容:
  1. 5bit标志、
  2. 目的IP地址(主机、网络或默认)、
  3. 下一站路由器的IP地址(间接路由)或者本地接口的IP地址(直接路由)及指向本地接口的指针

动态路由协议

名词解释

IGP (Interior Gateway Protocol) 内部网关协议 或者叫 域内选路协议

OSPF(Open Shortest Path First) 开放最短路径优先

EGP (Exterier Gateway Protocol) 外部网关协议

HELLO 1986年在原来NSFNET骨干网上使用的较早的IGP协议

  • 选路信息协议 (RIP)—最常用
  • Internet 是以一组自治系统(AS,Autonomous System)的方式组织的,每个自治系统通常由单个实体管理
  • 常常将一个公司或大学校园定义为一个自治系统。
  • 每个自治系统可以选择该自治系统中各个路由器之间的选路协议。这种协议我们称之为内部网关协议IGP(Interior Gateway Protocol)或域内选路协议(intradomain routing protocol)
  • Unix 系统上常常运行名为 routed 路由守护程序

UDP:用户数据协议

  • UDP 不提供可靠性:它把应用程序传给 IP层 的数据发送出去,但是并不保证它们能到达目的地
  • UDP 检验和覆盖 UDP 首部和 UDP 数据
  • UDP 检验和(事实上,TCP/IP协议簇中所有的检验和)是简单的16 bit和
  • 客户程序使用ephemeral端口号一般在1024~5000之间
  • 尽管IP分片过程看起来是透明的,但有一点让人不想使用它:即使只丢失一片数据也要重传整个数据报,因为 IP 层本身没有超时重传的机制
  • TCP 有超时和重传机制,但 UDP 没有。一些 UDP 应用程序本身也执行超时和重传
  • IP 数据报是指 IP 层端到端的传输单元(在分片之前和重新组装之后)
  • 分组是指在 IP 层和链路层之间传送的数据单元。一个分组可以是一个完整的IP数据报,也可以是 IP 数据报的一个分片
  • 理论上,IP 数据报的最大长度是65535字节,这是由 IP 首部16比特总长度字段所限制的
  • 去除20字节的IP首部和8个字节的 UDP 首部,UDP 数据报中用户数据的最长长度为65507字节

广播和多播

  • 广播和多播仅应用于 UDP
  • 对于以太网,当地址中最高字节的最低位设置为1时表示该地址是一个多播地址,用十六进制可表示为 01:00:00:00:00:00(以太网广播地址 ff:ff:ff:ff:ff:ff 可看作是以太网多播地址的特例)
  • D类IP地址被称为多播组地址

TCP链接的建立与终止

标志 3字符缩写 描述
S SYN 同步序号
F FIN 发送方完成数据发送
R RST 复位链接
P PSH 尽可能快的将数据送往接收进程
. 以上四个标志比特均置为0

未完待续… …

Author: rexmolo
Link: http://rexmolo.github.io/2018/07/24/tcp-ip-reading-notes/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.