TCP/IP详解笔记

1 MSS由来
MSS位于TCP选项部分(长度可变部分)
最大报文段长度选项MSS,MSS选项用于在TCP连接建立时,收发双发协商通信时每一


个报文段所能承载的最大数据长度。
从理论上讲,理想的MSS应该能尽可能多地承载用户数据,勇士在传输通路上又可能


避免分片。但实际中确定这样一个最佳的MSS很困难。一种通路MTU发现技术可以帮助


TCP来确定最佳的MSS值。


2 半打开 半关闭
TCP的半开连接(half-open)是指TCP连接的一端崩溃,或者在未通知对端的情况下移


除socket,不可以正常收发数据,否则会产生RST。
TCP的半关闭是指TCP连接的一端调用shutdown操作使数据只能往一个方向流动,只


有一方发送了FIN,仍然可以正常收(或发)数据。


3 处于timewait 受到重复的FIN


重复的FIN会得到确认  2MSL定时器重新打开


4 打电话


TCP可以同时打开 同时关闭   电话可以同时关闭 但是不能同时打开


5 键入10个字节 发送了11个  键入12 发送14


不同客户把换行符转换的字节个数不一样  前面转换1个  后面两个


6 启动一个服务器程序  没客户连接  关了能立即重启服务器  说明没经历


Timewait状态,请解释


一个连接只有建立了状态才能进入2MSL


7 timewait收到RST 


引起状态过早中止


8 TCP根据端口号对数据分用?


不是,可根据源IP  端口  目的IP 端口 进行分用


9  为什么TCP有首部长度选项  udp没有


UDP首部长度固定  TCP首都有一些选项


10  为什么TCP首部前面是源端口目的端口


一个ICMP差错报文必须至少包含引起该差错报文的IP数据包的数据部分的前八个字节 


,这样 IP 端口号 齐全了,知道哪个链接出错了。


11 TCP字节流标示符


很多应用采用回车和换行表示结束  不过可以自己定义标示符


12 为什么我们把说有的Internet协议(IP ICMP UDP TCP IGMP)收到有检验


和的差错就丢弃?


IP  端口  协议字段  肯能被破坏了


13 检验和相关问题


除了UDP检验和 其他都是必须的  


14 RTT怎么计算得来


采用TCP的时间戳(首部选项里面)


15 选择确认  累计确认

TCP通信时,如果发送序列中间某个数据包丢失,TCP会通过重传最后确认的包开始的后续包,这样原先已经正确传输的包也可能重复发送,急剧降低了TCP性能。为改善这种情况,发展出SACK(Selective Acknowledgment, 选择性确认)技术,使TCP只重新发送丢失的包,不用发送后续所有的包,而且提供相应机制使接收方能告诉发送方哪些数据丢失,哪些数据重发了,哪些数据已经提前收到等。

16  向socket发送数据时, 可能只发送了用户缓存里的一半,然后失败,如何处理?    记录缓存的偏移量。 下一次socket写事件时, 再从偏移的位置接着发送。




17  非阻塞connect()如何实现?     
将socket设置成non-blocking,操作方法同非阻塞read()、write(); 




18  从socket读数据时,socket缓存里的数据,可能超过用户缓存的长度,如果处理?    可以调用realloc(),扩大原有的缓存块尺寸.但是临时申请内存的有一定性能损失。




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值