知识点:
建立一个连接需要三次握手,而终止一个连接要经过 4次握手。
在一个T C P连接中,仅有两方进行彼此通信。在第1 2章介绍的广播和多播不能用于T C P。
T C P将用户数据打包构成报文段;它发送数据后启动一个定时器;另一端对收到的数据进行确认,对失序的数据重新排序,丢弃重复数据; T C P提供端到端的流量控制,并计算和验证一个强制性的端到端检验和。
MMS——最大报文段长度
T I M E _ WA I T状态也称为2 M S L等待状态。
RFC 793 [Postel 1981c] 指出MSL为2分钟。然而,实现中的常用值是30秒,1分钟,或2分钟。
TCP的半关闭状态:T C P提供了连接的一端在结束它的发送后还能接收来自另一端数据的能力。这就是所谓下载的半关闭。正如我们早些时候提到的只有很少的应用程序使用它。为了使用这个特性,编程接口必须为应用程序提供一种方式来说明“我已经完成了数据传送,因此发送一个文件结束(F I N)给另一端,但我还想接收另一端发来的数据,直到它给我发来文件结束(F I N) ” 。
问题:
1. 为什么说TCP是面向连接的、可靠的字节流服务?
两端通过TCP连接,交换8bit字节构成的字节流。数据字节流可能是二进制、也可能是ASII字符或者其他类型数据。
而类似UDP协议则不是面向连接的。一端使用UDP向另一端发送数据报时,无需任务预先的握手。
TCP也是属于滑动窗口协议。
2. TCP的结构?
TCP数据被封装在一个IP数据包中,包括20字节的IP首部、20字节的TCP首部、以及TCP数据。
每个T C P段都包含源端和目的端的端口号,用于寻找发端和收端应用进程。这两个值加上I P首部中的源端I P地址和目的端I P地址唯一确定一个T C P连接。
T C P报文段中的数据部分是可选的。在一个连接建立和一个连接终止时,双方交换的报文段仅有 T C P首部。
TCP的标志比特:
在T C P首部中有6个标志比特。它们中的多个可同时被设置为 1。
U R G 紧急指针(u rgent pointer)有效 。
A C K 确认序号有效。
P S H 接收方应该尽快将这个报文段交给应用层。
R S T 重建连接。
S Y N 同步序号用来发起一个连接。这个标志和下一个标志将在第 1 8章介绍。
F I N 发端完成发送任务。
与TCP有关的RFC文档:
下表是 TCP/IP 协议和支持服务所支持的 RFC。
RFC 编号 | 标题 |
768 | 用户数据报协议 (UDP) |
783 | 日常文件传输协议 (TFTP) |
791 | Internet 协议 (IP) |
792 | Internet 控制消息协议 (ICMP) |
793 | 传输控制协议 (TCP) |
816 | 故障隔离和恢复 |
826 | 地址解析协议 (ARP) |
854 | Telnet 协议 (TELNET) |
862 | 回应协议 (ECHO) |
863 | 放弃协议 (DISCARD) |
864 | 字符生成器协议 (CHARGEN) |
865 | 当日报价协议 (QUOTE) |
867 | 白天协议 (DAYTIME) |
894 | 基于 Ethernet 的 IP |
919 | 广播 Internet 数据报 |
922 | 在现有子网中广播 Internet 数据报 |
950 | Internet 标准子网化过程 |
959 | 文件传输协议 (FTP) |
1001 | TCP/UDP 传输上的 NetBIOS 服务的协议标准:概念和方法 |
1002 | TCP/UDP 传输上的 NetBIOS 服务的协议标准:详细规范 |
1009 | Internet 网关的要求 |
1034 | 域名 - 概念和工具 |
1035 | 域名 - 实现和规范 |
1042 | 基于令牌环的 IP |
1055 | 通过串行线路的非标准 IP 数据报传输:SLIP |
1065 | 有关基于 TCP/IP 的 Internet 的管理信息的结构和标识 |
1112 | Internet 组管理协议 (IGMP) |
1122 | Internet 主机 - 通讯层的要求 |
1123 | Internet 主机 - 应用和支持的要求 |
1144 | 对于低速串行链接压缩 TCP/IP 头 |
1157 | 简单网络管理协议 (SNMP) |
1179 | 行式打印机监控程序协议 |
1188 | FDDI 上的 IP |
1191 | 路径 MTU 发现 |
1201 | 基于 ARCNET 的 IP |
1256 | ICMP 路由器发现消息 |
1323 | 高性能 TCP 扩展件 |
1332 | PPP IP 控制协议 (IPCP) |
1518 | 带有 CIDR 的 IP 地址分配的体系结构 |
1519 | 无类的域间路由 (CIDR):地址分配和集合策略 |
1534 | DHCP 和 BOOTP 之间的交互 |
1542 | Bootstrap 协议的说明和扩展 |
1552 | PPP 网际数据包交换控制协议 (IPXCP) |
1661 | 点对点协议 (PPP) |
1662 | HDLC 帧中的 PPP |
1748 | 使用 SMIv2 的 IEEE 802.5 MIB |
1749 | 使用 SMIv2 的 IEEE 802.5 站源路由 MIB |
1812 | IP 版本 4 的要求路由器 |
1828 | 使用 Keyed MD5 的 IP 身份验证 |
1829 | ESP DES-CBC 变换 |
1851 | ESP 三重 DES-CBC 变换 |
1852 | 使用 Keyed SHA 的 IP 身份验证 |
1878 | IPv4 的可变长度子网表 |
1886 | 支持 IP 版本 6 的 DNS 扩展名 |
1994 | PPP 质询握手身份验证协议 (CHAP) |
1995 | DNS 中的增量区域传输 |
1996 | 用来提示 DNS 通知区域更改的机制 |
2018 | TCP 选择的确认选项 |
2085 | 使用重播防止的 HMAC-MD5 IP 身份验证 |
2104 | HMAC:邮件身份验证的键控哈希计算 |
2131 | 动态主机配置协议 (DHCP) |
2136 | 域名系统中的动态更新 (DNS UPDATE) |
2181 | 对 DNS 规范的说明 |
2236 | 网际分组管理协议 (IGMP) 版本 2 |
2308 | DNS 查询的反向缓存 (DNS NCACHE) |
2401 | Internet 协议的“安全结构” |
2402 | IP 验证标头 |
2406 | IP 封装安全措施负载量 (ESP) |
2581 | TCP 拥塞控制 |