TCP & UDP

  • TCP ( Transmission Control Protocol ) 可靠性高
  • UDP ( User Datagram Protocol ) 可靠性低 & 传输快

TCP / IP 重要特点:  与低层的数据链路层和物理层无关.

TCP: Transmission Control Protocol传输控制协议

*事先为所发送的数据开辟出连接好的通道,然后再进行数据发送;

提供: 数据流传送、可靠性、有效流控、全双工操作和多路复用。

TCP支持的协议主要 有: Telnet、FTP、SMTP等 

UDP:

*不提供 可靠性、流控、 差错恢复功能。是一种无连接的传输层协议

UDP支持协议主要有:

  • NFS 网络文件系统
    • SNMP 简单网络管理协议
    • DNS 主域名称系统
    • TFTP 通用文件传输协议

TCP 数据包结构 :** 

*TCP 报文结构 : 报文首部 + 用户数据

  • *首部: 默认 20 Byte字节 ( 也就是 160bits )

    1. Source Poret 【源端口】 - 16bit 来源端口号;
      1. Destination 【目的端口】- 16bit 目的端口号;

      2. 【序号】- 32bit 每一个TCP报文段都会有一个序号,序号字段的值其实是本报文段所发送的数据的第一个字节的序号。这是因为TCP是面向连接的可靠服务,其每一个字节都会对应一个序号,通过序号来确保服务的可靠性和有序性。

      3. 【确认号】- 32bit 确认号,是期望收到对方的下一个报文段的数据的第一个字节的序号。(这句话有些拗口,但是在后面我们讲解三次握手和四次挥手时,大家会更深刻的理解这句话的含义)

      4. 【数据偏移】- 4bit 其实它本质上就是“首部长度”,因为“数据偏移”是指TCP报文段的数据部分的起始处距离TCP报文段的起始处的距离。(仍然很拗口,但相信你能明白)。 数据偏移总共占4bit,因此最大能表示的数值为15。而数据偏移的单位是“4字节”,此处的设计和IP数据报的设计是完全相同的,所以说TCP报文段首部的长度最长为15×4=60字节,且首部长度必须为4字节的整数倍。

      5. 【保留字段】- 6bit 这6bit在标准中是保留字段,我猜测,有两个目的,第一个是预留除URG/ACK/PSH/RST/SYN/FIN/之外的冗余功能位;第二个是为了对其字节位。

      6. 【紧急字段URG】- 1bit。 当URG=1时,,此报文段中有紧急数据,应尽快优先传送。

      7. 【确认字段ACK】- 1bit。 ACK=1: 表示确认,且确认号有效;当ACK=0时,确认号字段无效。

      8. 【推送字段PSH】- 1bit 当PSH=1时,则报文段会被尽快地交付给目的方,不会对这样的报文段使用缓存策略。

      9. 【复位字段RST】- 1bit RST=1 :表明TCP连接中出现了严重的差错,必须释放连接,然后再重新建立连接。

      10. 【同步字段SYN】- 1bit。 当SYN=1时,表示发起一个连接请求。

      11. 【终止字段FIN】- 1bit。 用来释放连接。当FIN=1时,表明此报文段的数据已发送完成,并要求释放连接。

      12. 【窗口字段】- 16bit 此字段用来控制对方发送的数据量,单位为字节。 一般TCP连接的其中一端会根据自身的缓存空间大小来确定自己的接收窗口大小,然后告知另一端以确定另一端的发送窗口大小。

      13. 【校验和字段】- 16bit 这个校验和是针对首部和数据两部分的。

      14. 【紧急指针字段】- 16bit 紧急指针指出在本报文段中的紧急数据的最后一个字节的序号。

TCP/IP 详解 卷 1 : 协议

引言:

TCP/IP 协议 使得各种型号各种操作系统的电脑能互相通信. 这很神奇.

TCP、UDP 两种最著名的运输层协议,两者都使用 IP 作为网络层协议 !! 网络协议 通常分不同层次进行开发,每一层负责不同的功能.

TCP/IP 分四层 : 链路层、网络层、传输层 、应用层

网络层 : IP 提供点到点的服务 传输层 : TCP/UDP 端到端的服务

**链路层: ARP、RARP、硬件接口 *处理与电缆(网线)的物理接口细节. 也就是网卡驱动程序

ARP 地址解析协议 RARP 逆地址解析协议

*网络层: IP、ICMP、IGMP  处理网络中的活动

IP 网际协议 ICMP 互联网控制报文协议 IGMP 互联网组管理协议

*运输层: TCP、UDP  为两台主机上的应用程序 提供端到端的通信

TCP 传输控制协议 提供高可靠性的数据通信.

把应用程序交给他的数据 分成合适的小快 交给下面的网络层 确认接收到的分组 设置发送最后确认分组的超时时钟等 由于本身就是高可靠性 因此应用层可以忽略所有的这些细节

**UDP 用户数据报文协议

把数据报的分组 从一台主机 发送到另一台主机. 并不保证数据报能到达另一端. 任何必须的可靠性 必须由应用层来提供.

应用层: 用户进程 *处理特定的应用程序细节

Telnet 远程登录 FTP 文件传输 SMTP 简单邮件传送协议 SNMP 简单网络管理协议

应用层 一般是一个用户进程 下三层 一般在 系统内核中执行. 顶层与下 三层关键区别:
顶层( 应用层) 只关心 应用程序的细节. 不关系数据在网络中的传输 下三层 对应用程序一无所知 但是 要处理所有的通信细节.

FTP 是一种 应用层协议 以太网协议 在链路层上

TCP/IP 是好多协议的组合. TCP IP 只是其中的两种而已.

网络接口层 和应用层的目的很显然

网络接口层: 处理有关通信媒体的细节 : 以太网 令牌环网 等 应用层: 处理某个特定的应用程序.

互联网 internet 就是一组 通过相同协议 互联在一起的网络.

构造互联网 最简单的方法就是 把多个网络 通过路由器进行连接.

路由器: IP Router 为不同类型的 物理网络提供连接. 以太网 令牌环网 点对点的链接 和 FFDI 光纤分布式数据接口 等等

网络层 IP 提供的是一种不可靠的服务.

互联网的目的之一 就是 在应用程序中 隐藏所有的物理细节. 应用层 不能关心 也不关心 这台电脑是在 以太网上 或者 令牌环网上

应用层: 就是 用户进程

网桥: 链路层上对网络进行连接 路由器: 网络层上对网络进行连接

互联网地址: 互联网上的每个接口 都必须有一个唯一的 IP 地址. IP 地址长度 32 bit.

IP 地址有一定的结构. 并不单纯的是一串数字.

域名系统: 一个分布的数据库. 提供 IP地址 和 主机名 之间的映射信息. 任何应用程序 都能调用这个标准的函数库来寻 主机名和 IP 的对应关系.

封装:

应用程序 → TCP 层 叫:TCP 报文 → IP 层 叫: IP 数据包 → 网卡层: 叫帧 Frame

每经过一层 都会再这个数据增加一些首部信息( 有可能还会加尾部信息 ) 比如 TCP 首部 IP 首部 以太网首尾部.

帧的物理特性长度 必须在 46-1500 字节 之间.

数据在网线中参数的教育 叫分组 ( Packet )

由于 TCP UDP ICMP IGMP 都要向 IP 传送数据. 所以 IP 生成的首部 要加入某种标识 表明数据属于哪一层, 这个就叫 协议域 1 是 ICMP 2 是 IGMP 6 是 TCP 17 是 UDP

类似的 很多应用程序都能用 TCP 或 UDP 来传送数据. 运输层生成报文首部时候 也有一个应用程序的标识符.

分用: 主机收到一个以太网数据帧时 数据就开始从协议 由底向上升 同时去掉各种报文首部.

编程接口: 使用 TCP、IP 协议的应用程序 通常采用两种应用编程接口API : Socket 和 TLI 运输层接口 ( Transport Layer Interface )

链路层

链路层目的:

  • IP 模块: 发送和接受 IP 数据包.
  • ARP 模块: 发送和接受 ARP 应答
  • RARP 模块: 发送和接受 RARP 应答

环回接口: Loopback Interface *允许运行在同一主机上的 客户程序和服务器程序 通过 TCP/IP 进行通信

A类 网络 127 就是给环回接口预留的. 根据惯例: 大多数系统把 127.0.0.1 分配给这个接口. 并命名为 Localhost 一个传给环回接口的 IP 数据包不能在任何网络上出现.

IP: 网际协议

*IP 是 TCP/IP 协议中最核心的协议 . *所有的 TCP、UDP、ICMP、IGMP 数据 都以 IP 数据报格式传输

不可靠: 不能保证 IP 数据报能成功抵达目的地. 如: 路由器暂时用完了缓冲区, IP 有个最简单的处理算法: 丢弃该数据报.然后发送 ICMP 消息报给信源端.

IP 数据包结构 : 一个刻度表示1个二进制位(比特)。
普通 IP 首部长 20字节

  • 版本4位 :  表示协议版本号,即常说的IPv4 ;

  • 头长4位 : 数据包头部长度。

    它表示数据包头部包括多少个32位长整型,也就是多少个4字节的数据。无选项则为5(红色部分)。

  • 服务类型8位 :  每个位的意义如下:

    1. 过程字段: 3位, 取值:0(正常)- 7(网络控制) 数据包重要性,取值越大数据越重要.
      1. 延迟字段: 1位, 取值:0(正常)、1(期待低的延迟)
      2. 流量字段: 1位, 取值:0(正常)、1(期待高的流量)
      3. 可靠性字段: 1位, 取值:0(正常)、1(期待高的可靠性)
      4. 成本字段: 1位, 取值:0(正常)、1(期待最小成本)
      5. 保留字段: 1位,未使用
  • 包裹总长16位 :  当前数据包的总长度,单位是字节。当然最大只能是65535,及64KB。

  • 重组标识16位 :  发送主机赋予的标识,以便接收方进行分片重组。

  • 标志3位 : 

    1. 保留段位(2):1位,未使用
      1. 不分段位(1):1位,取值:0(允许数据报分段)、1(数据报不能分段)
      2. 更多段位(0):1位,取值:0(数据包后面没有包,该包为最后的包)、1(数据包后面有更多的包)
  • 段偏移量13位 : 与更多段位组合,帮助接收方组合分段的报文,以字节为单位。

  • 生存时间8位 :  ping命令看到的TTL(Time To Live) 就是这个,每经过一个路由器,该值就减一,到零丢弃。

  • 协议代码8位 :  使用该包裹的上层协议,如TCP=6,ICMP=1,UDP=17

  • 头检验和16位 : 是IPv4数据包头部的校验和。

  • 源始地址32位 :  我们常看到的IP是将每个字节用点(.)分开,如此而已。
  • 目的地址32位 : 同上。

  • 可选选项 :  主要给一些特殊的情况使用,往往安全路由会当作攻击而过滤掉.
  • 用户数据

最小的延迟 : Telnet 最大吞吐量 : FTP
最高可靠性 : SNMP 网络管理 和 路由选择协议
最小费用: 用户网络新闻

TTL Time-To-Live 生存时间: 设置了 数据包 可以经过的最多路由器数! 默认32/64 每经过一个路由器,值就减去1. 值为零时. 数据包被丢弃.并发送 ICMP 报文通知源主机

IP 路由选择

IP 层在内存中有个路由表.收到一个数据包 并进行发送时 它都要对该表搜索一次.

路由表

目的 IP 地址: 下一站/下一条 路由器的 ip 地址: 标志: 指明目的 ip 地址是网络地址 还是主机地址 . 为数据包的传输指定一个网络接口.

IP 路由选择是 逐跳进行的. IP 并不知道 到达任何目的的完整路径. (除了那些与主机直接相连的)

IP 路由功能:

搜索路由表 找到能与目的 ip 地址完全匹配的表 (网络号 主机号 都要匹配)

搜索路由表 找到能与目的的网络号相匹配的表 如果找到 就把报文发送给该表木自动的下一站路由器. 以太网上的所有主机都是通过这种表目进行寻径的

搜索路由表 寻找标为默认的表.

如果上面的步骤都没有成功 那么该数据包 就不能被传送..程序会报错.

完整主机地址匹配在网络号匹配之前执行. 当他们都失败后 才选择默认路由器.

子网寻址:

现在所有的主机都要求 支持子网编地 不能把 IP 看成 由 单纯的网络号+主机号组成 而是 把主机号再分成一个子网号和主机号!!! 原因是 AB 类地址 为主机号分配了太多的空间. 可容纳的主机数 2的24次-2 和 2的16次-2
全0 和全1 是无效的 所以要减2

事实上 一个网络中人们不会安排那么多主机.

如: B 类网络 16位网络号+ 16位主机号. 这16位主机号 下面可以再分子网 比如8位用于子网号码 8位用于主机号 那么 就允许有254个子网 每个子网可以有254台主机

大多数子网 都是 B类的.其实还能用 C 类地址 只是它可用的比特数比较少而已.

很少出现 A 类地址的子网例子是因为 A 类地址本身就少. 但是大多数 A 类地址都是惊喜子网划分的.

子网 对外部路由器来说 隐藏了内部网络组织的细节.

如: b 类地址下有 1000个子网. 你要知道子网号码 数据包才能准确的送到你的网络.

子网掩码: 除了 IP地址 主机还需要 有多少 bit 用途子网号 多少 bit 用于主机号

掩码 是一个32bit 的值. → 11111111111111111111111111111111 值为1的比特 留给网络号和子网号 值为0的比特 留给主机号

B类
16位网络号 + 8为子网号 + 8位主机号 → 1111111111111111+11111111+00000000 → 也就是255.255.255.0

16位网络号 + 10位子网号 + 6位主机号 → 1111111111111111 + 1111111111 + 000000 → 也就是255.255.255.192 给定 IP 地址 和 子网掩码后: 主机就能确定 IP 数据包的目的:

  1. 子网上的主机
  2. 本网络 其他子网中的主机
  3. 其他网络上的主机

如果知道本机的 IP 地址 那么就直达它是 ABC 的哪类. 可以从 IP 的第一段取值范围看.

也就知道网络号和子网号之间的分界线. 再根据子网掩码 就能知道 子网号与主机号之间的分界线

例子:

假设 本机 IP 地址 140.252.11.1 → 可以看出是 B 类地址 16位 网络号. 子网掩码: 255.255.255.0 →除去前面 两个 255 也就是16位网络号码 还剩下255.0 可以算出 255=2的8次-1 所以 子网号码是8位 主机号也有8位.

如果目的 IP 是 140.252.4.5 可以看出B 类别网络号是相同的 ( 140.255 )

但是子网号是不同的 ( 1和4 )

如果目的 IP 是 140.255.1.22 可以看出网络号 还是一样 ( 140.255 ) 子网号也是一样 但是主机号不同

如果目的 IP 是 192.43.235.6 一个 C 类别地址. 那么网络号是不同的 其他肯定不同.

国际在线 允许一个含有子网的网络 使用多个子网掩码.

ifconfig: 这个命令一般在引导时运行.

环回接口: Lo0 一个 A 类地址.

netstat: -i 打印出接口信息 -n 打印出 IP 地址 netstat -in 看每个网卡的 IP

ARP

ARP 为 IP地址到对应的硬件地址 提供动态映射.

RARP 被那些没有磁盘驱动器的系统使用. 如无盘工作站 需要系统管理员手工设置.

ARP广播: ARP发送一份称作 ARP请求的以太网数据帧给以太网上的每个主机。 ARP请求数据帧中包含目的主机的 IP地址(主机名为 bsdi), 其意思是“如果你是这个 IP地址的拥有者,请回答你的硬件地址。

目的主机 收到这个广播,发现是找自己的 (根据 IP 地址) 于是发送一个 ARP 应答. 这个应答包里面包含自己的IP+Mac 地址.

网络接口 有硬件地址: 48 bit TCP/IP 有IP 地址: 32 bit 要参数数据. 必须要知道 硬件地址才能. 只有 ip 地址是不行的. ARP 就是 给硬件地址 和 IP 地址 提供动态映射.

ARP 高速缓存:

ARP 高效运行的关键是: 每个主机上都有一个 ARP 高速缓存. 这个缓存 存放了 最近的 ip 地址 和 Mac 地址 的映射历史记录. 每项记录的生存时间一般是20分钟. 从映射被创建开始计时.

查看 本地 ARP 缓存: arp -a -a 是显示全部的意思

ARP 格式

前两个字段: 以太网的源地址 和 目的地址

目的地址 全是1 是特殊地址: 也就是广播地址. 电缆上 所有的网卡 都要接受广播的数据帧

帧类型: 2 字节.

op 操作字段: 时钟操作类型 ARP 请求 值为1 ARP 应答 值为2 RARP 请求 值为3 RARP 应答 值为4

对于 不存在主机的 ARP 请求: 比如 主机已经关机.

ARP 高速缓存超时: arp 一般都要设置超时. 管理员 可以用 arp 命令固定 arp 而不设置超时.

ARP 代理: arp 请求是从 一个网络发送到另一个网络的. 那么 连接这两个网络的路由器 就能回答双方的 arp 请求.

这个 就是 ARP 代理 : Proxy ARP 这个功能 可以欺骗 发送端 让它误以为路由器就是主机. 事实上 目的主机在路由器的另一端

arp -d 删除某项 arp 对应.

arp -s 增加arp内容

RARP: 逆地址解析协议

有硬盘的电脑 一般是从 硬盘上的配置文件中读取 IP 地址.

无盘机,或者 无盘工作组 需要别的办法来获取 IP

每个网卡都是有唯一的硬件地址的.由网卡厂商配置的. 大概就是 开机 取得 网卡的 mac 地址. 发送一个 RARP 请求 (局域网内广播) 请求别的主机 相应这个无盘系统的 IP 地址.

ICMP: internet 控制报文协议

icmp 覆盖范围很广
从 致命差错到 信息差错.

Ping 程序

名字起源于 声呐定位操作. 目的是为了测试另一台主机是否可达.

如果不能 ping 到某台主机 那么一般不能 Telnet 或者 ftp 进去 如果不能 telnet 某台电脑 一般可以用 ping 程序来确定问题出在哪.

PIng 还能 测试到一台主机的往返时间, 以表明主机离我们多远.

通常 第一个 ping 值的 往返时间比后面的值大 是因为目的主机的硬件地址 不在 arp 高速缓存里 所以慢. 因为 要发送和接受 arp 请求

ping 程序 为我们提供了 查看 IP 记录路由 的机会. ping -R 选项.

IP 时间戳

ping 程序是对两个 TCP/IP 系统的连通性进行测试的基本工具 只利用 ICMP 回显请求和回显应答报文. 而不用经过 传输层 (TCP/UDP)

Traceroute & TTL

发 UDP 数据报给服务器. 目的端口号是一个不可能的端口. 当数据报到达服务器. 目服务器的 UDP 模块 会产生一份 端口不可达的 ICMP 报文. 就表示到达目的主机. 结束路由追踪.

流程:

  1. 本机发送TTL=1 的 IP 数据报 给目的主机. 经过第一个路由器时. TTL=0 路由器丢弃该数据报, 并返回一个 ICMP 报文. 这报文里面有第一个路由器的地址.
    1. 本机发送TTL=2 的 IP 数据报 给目的主机. 经过第二个路由器时. TTL=0 路由器丢弃该数据报, 并返回一个 ICMP 报文. 这报文里面有第二个路由器的地址.
      1. 本机发送TTL=3 的 IP 数据报 给目的主机. 经过第三个路由器时. TTL=0 路由器丢弃该数据报, 并返回一个 ICMP 报文. 这报文里面有第三个路由器的地址.
      2. 本机发送TTL=4 的 IP 数据报 给目的主机. 经过第四个路由器时. TTL=0 路由器丢弃该数据报, 并返回一个 ICMP 报文. 这报文里面有第四个路由器的地址.
      3. ………
      4. 特殊端口号的 UDP 数据报到达服务器,返回 端口不可达的 ICMP 报文.
      5. 结束

      路由器 只会在 TTL=0 时 返回一个 ICMP 数据报. Traceroute 只需区分 接受到的ICMP 报文是超时还是端口不可达.以判断什么时候结束.

IP 数据报 从一台电脑到另一台电脑 所 经过的 路由.

traceroute 程序 不需要 路由器有任何的特殊功能.

ttl : 防止数据报在选路时无休止的在网络中流动.

路由收到 ttl =0 的数据报 会丢弃该数据报.然后给信源发一份 ICMP 超时的信息.

Traceroute 必须可以给 数据报 设置 TTL 字段. 这个需要 管理员权限.

每个 路由器 发送3份数据报. 每收到一份 ICMP 报文. 就显示出往返时间. 5秒内 没有收到3份中的任意一份响应. 就打个星号. 并发送下一份数据报.

往返时间: 是往返的总时间.

IP 选路

选路是 IP 最重要的功能之一.

路由表的维护: 路由表中的信息 决定 IP 层的所有决策.

IP 搜索 路由表 步骤:

  1. 搜索匹配的主机地址
  2. 搜索匹配的网络地址
  3. 搜索 默认表项 (一般 是路由表中 一个指定的网络表项 网络号=0 )

先匹配主机地址 在匹配网络地址 .

选路机制: 搜索路由表 并决定 向哪个网络接口发送分组. 选路策略: 只 决定把哪些路由放入路由表规则

IP: 执行选路机制 路由守护程序: 提供选路策略

简单路由表: 列出路由表: netstat -r

netstat -rn

用数字格式 打印出 IP 地址

Routing tables

Internet: Destination Gateway Flags Refs Use Netif Expire default 172.19.16.1 UGSc 138 157 en5 default 172.19.16.1 UGScI 9 0 en0 127 127.0.0.1 UCS 1 0 lo0 127.0.0.1 127.0.0.1 UH 102 5031509 lo0 169.254 link#5 UCS 2 0 en5 169.254 link#4 UCSI 3 0 en0 169.254.136.96 link#4 UHLSW 1 1 en0 169.254.229.64 link#4 UHLSW 1 5 en0 169.254.255.255 link#5 UHLSW 2 22 en5 172.19.16/24 link#5 UCS 74 0 en5 172.19.16/24 link#4 UCSI 53 0 en0 172.19.16.1/32 link#5 UCS 2 0 en5 172.19.16.1 0:2:85:a:75:40 UHLWIir 10 0 en0 1199 172.19.16.1/32 link#4 UCSI 2 0 en0 172.19.16.1 0:2:85:a:75:40 UHLWIir 140 234 en5 1168 172.19.16.14 0:50:56:9e:66:dd UHLWIi 2 8169 en5 1178 172.19.16.15 0:c:29:b5:d1:ee UHLWIi 2 24097 en5 1193 172.19.16.16 f4:ce:46:b1:19:6 UHLWIi 2 6232 en5 1192

说明: 倒数第三行

如果目的是 到172.19.16.14的 那么网关就把数据发给 .14的mac 地址.

Flags 标志: 对于一个给定的路由 可以有5种不同的标志

U 该路由 可用. **G 该路由 是到一个网关的. 没有这个标志 说明目的地是直接相连的. 重要标志: 区分了是间接路由 / 直接路由 .(直接连路由是没有G 标志的)

**H 有标志该路由 是到一个主机的.目的地址是一个完整的主机地址. 没标志:说明这个路由是到一个网络. 目的地址是一个网络地址: 一个网络号 或者网络号和子网号的组合. D 该路由 是由重定向报文创建的. M 该路由 已被重定向报文修改.

Refs: 参考计数 Reference count 列出 正在使用路由的活动进程个数

Use: 通过该路由发送的分组数: 如果我们是该用户的唯一用户,那么 运行 ping 发送5个分组后 值会变成5

最后一列: 本地接口的名字.

输出的

第二行: 环回接口 名字始终是 LoO 第三行: 默认路由 每个主机都有一个或多个 默认路由. 如果表中没有找到特定的路由 那么就发送到默认路由器.

初始化路由表

一般 用 ifconfig 默认设置接口地址时候 就自动创建一个直接路由.

对于点对点链路 或者 环回接口 路由是达到主机 对于广播接口 如 以太网 : 路由是达到网络

到达主机 或者网络的路由 如果不是直接相连的. 那么必须加入 路由表.

ICMP: 当路由 收到一份 IP 数据包 但又不能转发时. 就要发送一份 ICMP 主机不可达 的 差错报文.

转发 / 不转发:

动态选路协议:

相邻的路由器 之间 进行通信, 以告知对方 每个路由器当前所连接的网络.

路由器 之间 必须采用 选路协议进行通信. 选路协议有很多种. 路由器上有个进程: 路由守护程序 (Routing daemon) 运行选路协议.于相邻的路由器进行通信.

RIP: 选路信息协议

最广泛使用/也最容易受攻击的选路协议.

UDP: 用户数据报协议

进程的每个输出操作都正好 产生一个 UDP 数据包, 并组装成一份 待发送的 IP 数据包.

应用程序 必须关心 IP 数据包的长度. 如果超过 MTU 那么就要对 IP 数据包进行分片.

IP 分片

物理网络层 一般会限制 每次发送 数据帧的最大长度.

本机的 IP 层, 接收到一份 要发送的 IP 数据包时:

  1. 判断 向本地哪个接口发送数据. (选路)
    1. 查询 该接口获得其 MTU.
      1. IP 层: 要发送的数据包长度 和 MTU 进行比较. 有需要的话就进行分片.

        可以在原始发送端 或者 路由器上 进行 分片

数据分片后 只有达到目的地 才进行组装.

UDP ARP 的交互作用:

最大 UDP 数据报 长度

单播 广播 多播

广播 & 多播 仅适用于 UDP

单播: unicast 两个主机通信不会干扰其他主机.

广播: broadcast 主机向网上的所有其他主机 发送帧.

多播: multicast 给某个组 (组里有固定的成员) 发送数据 比如 给多人发送邮件.

网卡工作流程:

  1. 查看 由信道送过来的帧
  2. 是否接受该帧 如接受: 传送帧搭配设备驱动程序. 然后驱动程序 吧帧传给下一层. 比如帧类型是 IP 数据报 那么就传到 IP 层. IP 根据 IP 地址中的 源地址 和 目的地址,进行更多的过滤检测 如果正常 就传送给下一层 如: TCP UDP

    一般网卡 仅接受 帧的Mac地址是自己的帧 & 广播地址的帧.

*混合模式 / 混杂模式  接收每个帧的一个复制. Tcpdump 就使用这种模式.

受限的广播

255.255.255.255 主机 不知道自己网段的 网络掩码. 连自己 IP 都不知道. 这样的数据 只存在本地网络中

IGMP: internet 组管理协议.

DNS 域名系统:

域名系统( D N S)是一种用于 T C P / I P应用程序的分布式数据库,它提供主机名字和 I P地 址之间的转换及有关电子邮件的选路信息。

bootp 引导程序协议

SNMP 简单网络管理协议:

网络设备很多 比如: 路由器 打印机 等等 这些设备 都是运行 TCP/IP 协议的.

管理站 可以显示 所有被管设备的状态. 例如 是否掉线 各种流量等等

Telnet & Remote Login 远程登录.

Remote Login 是最广泛的应用之一.

TCP/IP 网络 两种应用 提供远程登录功能.

Telnet 协议

可以工作在任何主机. 任何操作系统 任何终端.

FTP 文件传送协议 (TCP 协议)

常见的应用程序. 文件传输的 Internet 标准.

文件传送. 文件存取区别: 文件传送: 由 FTP 应用提供 文件存取: NFS (Sun 的网络文件系统) 等应用提供

要使用 FTP 就要有登录服务器的注册账号密码 或者 通过允许匿名 FTP .

最早是为了 两台不同的主机 运行着不同的操作系统 不同的文件结构 或许还使用不同的字符集.

工作原理:

服务器: 以被动方式 打开众所周知的 用于 FTP 的端口 (21) 等待用户的连接.

客户端: 主动打开 TCP 21端口 ,与服务器建立连接. 由于该连接 是用于文件传输目的: 所以 IP 对数据连接的特点是 : 最大限度的提高吞吐量.

匿名 FTP

允许 任何人 注册并使用 FTP 来传输文件.

SMTP 简单邮件传送协议.

电子邮件 是最流行的应用程序 所有 TCP 连接中 大约一半是 用于 简单邮件传输协议的 SMTP

网络文件系统

NFS 网络文件系统

tcpdump

和 wireshark 差不多. 没有图形界面.