UNIX网络编程笔记 第二章 传输层TCP、UDP和SCTP

传输层TCP、UDP和SCTP

  1. TCP MSS选项(Maximum Segment Size):
    SYN报文中携带该选项,告诉对端它在本连接中愿意接收的最大数据字节数。用来防止分片。MSS经常设置为MTU减去IP和TCP首部的固定长度,以太网中使用IPV4的MSS为1460(1500-20-20),IPV6为1440(1500-40-20)

  2. TIME_WAIT状态:
    可靠的实现TCP全双工连接的终止(防止ACK丢失,对端重发FIN)
    允许老的重复分节在网络中消逝(保证四元组相同的新连接不接收老连接中的报文)

  3. MTU:
    网络有一个由硬件规定的MTU,以太网的MTU是1500。IPV4要求的最小链路MTU是68字节(最大的IP首部60字节,拼接最小的片段8字节)。IPV6要求的最小链路MTU是1280字节。IPV6可以运行在小于此值的链路上,不过需要特定于链路的分片和重组功能。

  4. TCP SO_SNDBUF
    当某个应用进程调用write时,内核从该应用进程的缓冲区复制所用数据到套接字的发送缓冲区。如果套接字的发送缓冲区不能容纳所有数据(大小不够或者已有数据),该应用进程将被投入睡眠状态(假设套接字是阻塞的)。此时内核将不从write系统调用返回,直到应用进程缓冲区的所用数据都被复制到套接字发送缓冲区。因此,从写一个TCP套接字的write调用返回成功仅仅表示我们可以重新使用原来的进程缓冲区,并不表明对端的TCP或应用进程已经接收到数据。
    伴随来自对端的ACK不断到达,本端TCP才能从套接字发送缓冲区中删除已确认收到的数据(意思是TCP必须对自己发送的数据保留一份副本,直到它被对端确认收到)

  5. UDP SO_SNDBUF
    UDP套接字实际上并没有发送缓冲区,但是有一个发送缓冲区大小的设置,它仅仅代表可写到该UDP数据报的大小上限。如果应用程序试图发送一个超过该上限的数据包,内核将返回一个EMSGSIZE错误。UDP不保存发送报文的副本,因此无需一个真正的发送缓冲区。因为UDP没有MSS,所以UDP比TCP更可能被IP分片。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值