欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-03-02 13:57:49
...
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

UNIX网络编程卷一:2传输层:TCP UDP SCTP
            
    
    博客分类: Unix环境高级编程  
 

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
    
UNIX网络编程卷一:2传输层:TCP UDP SCTP
            
    
    博客分类: Unix环境高级编程  
 

 
5、TCP状态转换图

UNIX网络编程卷一:2传输层:TCP UDP SCTP
            
    
    博客分类: Unix环境高级编程  
 
  • UNIX网络编程卷一:2传输层:TCP UDP SCTP
            
    
    博客分类: Unix环境高级编程  
  • 大小: 39.2 KB
  • UNIX网络编程卷一:2传输层:TCP UDP SCTP
            
    
    博客分类: Unix环境高级编程  
  • 大小: 90.1 KB
  • UNIX网络编程卷一:2传输层:TCP UDP SCTP
            
    
    博客分类: Unix环境高级编程  
  • 大小: 42.2 KB