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

未完待续... ...

本作品采用《CC 协议》,转载必须注明作者和本文链接
rexmolo
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!