`
oolala
  • 浏览: 103675 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
09c341db-7f05-3f2b-a572-9ee69a5d8a77
unix环境高级编程
浏览量:22837
社区版块
存档分类
最新评论

UNIX网络编程卷一:2传输层:TCP UDP SCTP

 
阅读更多
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)
         当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连接终止
    TCP终止一个连接则需要4个分节
    1)某个应用进程首先调用close,我们称该端执行主动关闭(active close)。该端的TCP于是发送一个FIN分节,表示数据发送完毕。
    2)接收到这个FIN的对端执行被动关闭(passive close)。这个FIN由TCP确认。
    3)一段时间后,接收到这个文件结束符的应用进程将调用close关闭它的套接字,这导致它的tcp也发送一个FIN    
    4)接收这个最终FIN的原发送端tcp确认这个FIN
    

 

 
5、TCP状态转换图


 
  • 大小: 39.2 KB
  • 大小: 90.1 KB
  • 大小: 42.2 KB
分享到:
评论

相关推荐

    UNIX网络编程 第2卷 进程间通信.pdf(带书签)

    《UNIX网络编程 第2卷 进程间通信》是一本深入探讨UNIX环境下进程间通信机制的权威技术书籍。该书共分为四部分,涵盖了从基础套接口编程到高级套接口编程的多个方面,旨在为读者提供全面的进程间通信知识和编程实践...

    UNIX网络编程 卷1:套接字联网API

    第2章 传输层:TCP、UDP和SCTP 第二部分 基本套接字编程 第3章 套接字编程简介 第4章 基本TCP套接字编程 第5章 TCP客户/服务器程序示例 第6章 I/O复用:select和poll函数 第7章 套接字选项 第8章 ...

    UNIX网络编程卷1:套接字联网API(第3版)part1 共2部分

    第2章 传输层:TCP、UDP和SCTP 第二部分 基本套接字编程 第3章 套接字编程简介 第4章 基本TCP套接字编程 第5章 TCP客户/服务器程序示例 第6章 IO复用:select和poll函数 第7章 套接字选项 第8章 基本UDP套接...

    UNIX网络编程卷1

    **《UNIX网络编程卷1》**是一本深入探讨UNIX环境下网络编程技术的专业书籍,主要聚焦于Sockets网络编程接口(API)。此书第三版进一步扩展和完善了前两版的内容,提供了更全面的理论基础与实践指导。 #### 二、第一...

    UNIX网络编程 第2卷 进程间通信 带完整书签

    第2章 传输层:TCP、UDP和SCTP 第2部 分基本套接口编程? 第3章 套接口编程简介 第4章 基本TCP套接口编程 第5章 TCP客户/服务器程序例子? 第6章 I/O复用:select和poll函数 第7章 套接口选项 第8章 基本UDP套...

    tcp-ip详解卷1:协议.TCP-IP详解卷2:TCP-IP详解卷3:TCP事务协议,HTTP,NNTP和UNIX域协议

    卷1:《协议》详细介绍了TCP/IP的基础知识,包括网络接口层(如Ethernet、Token Ring)、互联网层(IP协议、ICMP、ARP、RARP)以及传输层(TCP、UDP)。其中,IP协议是整个TCP/IP架构的核心,负责在不同网络间传输...

    Unix网络编程英文版PDF

    此外,书中还涉及了TCP/IP协议的各个层次,尤其是传输层中的TCP、UDP和SCTP协议。TCP(传输控制协议)是一种面向连接的协议,保证了数据包的可靠传输;UDP(用户数据报协议)是一种无连接的协议,适用于对实时性要求...

    UNIX网络编程卷1,套接字联网API(第3版)(中文版)(Stun[总结].pdf

    书中涵盖了从基础到高级的网络编程主题,包括TCP/IP协议栈、传输层协议如TCP、UDP和SCTP的详解,以及如何使用套接字API进行网络通信。在第一部分,作者介绍了网络编程的基本概念,通过一个简单的时间获取客户程序来...

    unix网络编程英文版第三版pdf

    - **第2章**:传输层:TCP、UDP和SCTP - 大局观 - 用户数据报协议(UDP) - 传输控制协议(TCP) - 流控制传输协议(SCTP) - TCP连接建立与终止 - TIME_WAIT状态 - SCTP关联建立与终止 - 端口号 - TCP...

    unix网络编程 第一卷

    UDP、TCP和SCTP作为传输层协议,在书中得到了系统性的阐述。特别是对TCP协议,作者重点讲解了TCP连接的建立和终止过程、TIME_WAIT状态以及端口号的作用,并揭示了它们与并发服务器设计之间的内在联系。而缓冲区大小...

    UNIX网络编程卷2进程间通信(第2版)

    第2章 传输层:TCP、UDP和SCTP 第2部 分基本套接口编程? 第3章 套接口编程简介 第4章 基本TCP套接口编程 第5章 TCP客户/服务器程序例子? 第6章 I/O复用:select和poll函数 第7章 套接口选项 第8章 基本UDP套接口编程...

    UNIX网络编程(第一卷)套接口API和XOpen传输接口

    根据给定的文件标题、描述和标签,“UNIX网络编程(第一卷)套接口API和XOpen传输接口”,我们可以深入探讨其中涉及的关键知识点。 ### 一、UNIX网络编程基础 #### 1. UNIX操作系统简介 UNIX是一种多用户、多任务...

    sctp源码(freebsd7.0)

    它在互联网协议栈中位于传输层,与TCP和UDP同级,但提供了比TCP更强的可靠性以及比UDP更高的效率。FreeBSD操作系统是一个开源的类UNIX系统,它在内核中支持多种协议,包括SCTP。 在"freebsd7.0"版本中,SCTP的源码...

    SCTP_tutorial.ppt

    2. 《UNIX网络编程》卷1第三版(Stevens-Fenner-Rudoff著),对于理解套接字编程和SCTP在UNIX环境中的应用非常有帮助。 本教程不仅会介绍SCTP的理论知识,还将通过实例分析和讨论,使学员能够将所学应用于实际的...

    Unix网络编程 3rd vol1 读书笔记.docx

    在Unix网络编程中,传输层是网络通信的核心部分,主要涉及TCP、UDP和SCTP这三种协议。本读书笔记主要关注TCP协议及其相关概念。 TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输层协议。TCP通过...

    UNIX 网络编程

    TCP和UDP传输层协议 详述了传输控制协议(TCP)和用户数据报协议(UDP)的工作原理,以及如何在实际应用中高效利用这些协议。 #### 2. Socket编程 涵盖基本、高级、路由和原始socket的使用方法,包括如何进行...

Global site tag (gtag.js) - Google Analytics