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状态转换图


 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值