1、总图
udp是一个简单的、不可靠的数据报协议,而tcp是一个复杂、可靠的字节流协议
TCP的某些特性一旦理解,就很容易编写健壮的客户和服务器程序。
TCP三路握手、TCP连接终止序列、TCP的TIME_WAIT状态
套接字层提供的TCP、UDP缓冲机制。
TCP 传输控制协议,TCP是一个面向连接的协议,为用户进程提供可靠的全双工字节流。TCP套接字是一种流套接字(stream socket)
TCP关心确认、超时和重传之类的细节。TCP即可以是IPv4,也可以是IPv6
传输控制协议
a)tcp提供客户与服务器之间的连接
b)tcp还提供了可靠性(reliability)
b)tcp还提供了可靠性(reliability)
当TCP向另一端发送数据时,它要求对端返回一个确认。如果没有收到确认,tcp就自动重传数据并等待更长时间。在数次重传失败后,
tcp才放弃 ,如此在尝试发送数据上所花时间一般为4-10分钟
c)tcp提供流量控制
d)tcp连接是全双工的
2、三路握手
建立一个TCP连接时会发生下述情形
1)服务器必须准备好接受外来的连接。这通常通过调用socket、bind、listen函数来完成,我们称为被动打开(passive open)
2)客户通过调用connect发起主动打开(active open)。这导致客户TCP发送一个SYN分节,它告诉服务器客户将在连接中发送数据的初始序列号。
通常SYN分节不携带数据,其所在IP数据报只含有一个IP首部、一个TCP首部及可能有的TCP选项。
3)服务器必须确认(ACK)客户的SYN,同时自己也得发送一个SYN分节,它含有服务器将在同一连接中发送的数据的初始序列号。
服务器在单个分节中发送的SYN和对客户SYN的ACK
4)客户必须确认服务器的SYN
3、TCP选项
MSS选项。发送SYN的tcp一端使用本选项通告对端它的最大分节大小(maximum segment size)即MSS,也就是它在本连接的每个tcp分节中愿意
接受的最大数据量。TCP_MAXSEG套接字选项提取和设置这个tcp选项
容器规模选项。 tcp连接任何一端能够通告对端的最大容器大小是65535,因为在tcp首部中相应的字段占16位。SO_RCVBUF套接字选项
时间戳选项
4、TCP连接终止
4、TCP连接终止
TCP终止一个连接则需要4个分节
1)某个应用进程首先调用close,我们称该端执行主动关闭(active close)。该端的TCP于是发送一个FIN分节,表示数据发送完毕。
2)接收到这个FIN的对端执行被动关闭(passive close)。这个FIN由TCP确认。
3)一段时间后,接收到这个文件结束符的应用进程将调用close关闭它的套接字,这导致它的tcp也发送一个FIN
4)接收这个最终FIN的原发送端tcp确认这个FIN
5、TCP状态转换图
相关推荐
《UNIX网络编程 第2卷 进程间通信》是一本深入探讨UNIX环境下进程间通信机制的权威技术书籍。该书共分为四部分,涵盖了从基础套接口编程到高级套接口编程的多个方面,旨在为读者提供全面的进程间通信知识和编程实践...
第2章 传输层:TCP、UDP和SCTP 第二部分 基本套接字编程 第3章 套接字编程简介 第4章 基本TCP套接字编程 第5章 TCP客户/服务器程序示例 第6章 I/O复用:select和poll函数 第7章 套接字选项 第8章 ...
第2章 传输层:TCP、UDP和SCTP 第二部分 基本套接字编程 第3章 套接字编程简介 第4章 基本TCP套接字编程 第5章 TCP客户/服务器程序示例 第6章 IO复用:select和poll函数 第7章 套接字选项 第8章 基本UDP套接...
**《UNIX网络编程卷1》**是一本深入探讨UNIX环境下网络编程技术的专业书籍,主要聚焦于Sockets网络编程接口(API)。此书第三版进一步扩展和完善了前两版的内容,提供了更全面的理论基础与实践指导。 #### 二、第一...
第2章 传输层:TCP、UDP和SCTP 第2部 分基本套接口编程? 第3章 套接口编程简介 第4章 基本TCP套接口编程 第5章 TCP客户/服务器程序例子? 第6章 I/O复用:select和poll函数 第7章 套接口选项 第8章 基本UDP套...
卷1:《协议》详细介绍了TCP/IP的基础知识,包括网络接口层(如Ethernet、Token Ring)、互联网层(IP协议、ICMP、ARP、RARP)以及传输层(TCP、UDP)。其中,IP协议是整个TCP/IP架构的核心,负责在不同网络间传输...
此外,书中还涉及了TCP/IP协议的各个层次,尤其是传输层中的TCP、UDP和SCTP协议。TCP(传输控制协议)是一种面向连接的协议,保证了数据包的可靠传输;UDP(用户数据报协议)是一种无连接的协议,适用于对实时性要求...
书中涵盖了从基础到高级的网络编程主题,包括TCP/IP协议栈、传输层协议如TCP、UDP和SCTP的详解,以及如何使用套接字API进行网络通信。在第一部分,作者介绍了网络编程的基本概念,通过一个简单的时间获取客户程序来...
- **第2章**:传输层:TCP、UDP和SCTP - 大局观 - 用户数据报协议(UDP) - 传输控制协议(TCP) - 流控制传输协议(SCTP) - TCP连接建立与终止 - TIME_WAIT状态 - SCTP关联建立与终止 - 端口号 - TCP...
UDP、TCP和SCTP作为传输层协议,在书中得到了系统性的阐述。特别是对TCP协议,作者重点讲解了TCP连接的建立和终止过程、TIME_WAIT状态以及端口号的作用,并揭示了它们与并发服务器设计之间的内在联系。而缓冲区大小...
第2章 传输层:TCP、UDP和SCTP 第2部 分基本套接口编程? 第3章 套接口编程简介 第4章 基本TCP套接口编程 第5章 TCP客户/服务器程序例子? 第6章 I/O复用:select和poll函数 第7章 套接口选项 第8章 基本UDP套接口编程...
根据给定的文件标题、描述和标签,“UNIX网络编程(第一卷)套接口API和XOpen传输接口”,我们可以深入探讨其中涉及的关键知识点。 ### 一、UNIX网络编程基础 #### 1. UNIX操作系统简介 UNIX是一种多用户、多任务...
它在互联网协议栈中位于传输层,与TCP和UDP同级,但提供了比TCP更强的可靠性以及比UDP更高的效率。FreeBSD操作系统是一个开源的类UNIX系统,它在内核中支持多种协议,包括SCTP。 在"freebsd7.0"版本中,SCTP的源码...
2. 《UNIX网络编程》卷1第三版(Stevens-Fenner-Rudoff著),对于理解套接字编程和SCTP在UNIX环境中的应用非常有帮助。 本教程不仅会介绍SCTP的理论知识,还将通过实例分析和讨论,使学员能够将所学应用于实际的...
在Unix网络编程中,传输层是网络通信的核心部分,主要涉及TCP、UDP和SCTP这三种协议。本读书笔记主要关注TCP协议及其相关概念。 TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输层协议。TCP通过...
TCP和UDP传输层协议 详述了传输控制协议(TCP)和用户数据报协议(UDP)的工作原理,以及如何在实际应用中高效利用这些协议。 #### 2. Socket编程 涵盖基本、高级、路由和原始socket的使用方法,包括如何进行...