unix 网络编程 读书笔记

  1. 三次握手,客户端发送syn分节会带数据的初始序号j,服务端在单个分节中会发送,ack确认数据序号j+1,同时syn的序号为k,最后客户端回复ack分节k+1
    2. tcp和udp发送数据大小都受MTU限制,如果超出MTU大小(1500字节),将被分片
    3. connet连接失败,需要close该socket,不能循环调用connect
    4. 进程终止时如果没有调动close(fd),内核也会关闭所有fd,并发送FIN分节
    5. 信号处理函数的调用会产生中断,会中断accept,read等慢系统调用,errno是EINTER,有的系统会重启被中断的系统调用,有的不会。
    6. 如果有多个子进程已经终止,则wait函数每调用一次只返回一个进程的终止信息,所以需要循环调用用waitpid()(切非阻塞调用)来获取所有子进程的终止状态。
    7. SO_KEEPALIVE,SO_LINGER,TCP_NAGLE等选型,连接套接字是从监听套接字集成而来的。
    8. udp可以发送长度为0的数据,所以接收端read返回0并不表示连接已关闭。
    9. udp可以调用connect,调用后sendto和recvfrom将不再填充地址参数,填充会报错。而且只能接受来connect ip和端口的数据。同时还会受到异步错误,为connect的套接字收不到异步错误。
    10. 如果需要大量给固定ip和端口发送消息,可以显示调用一次connect,这样效率比较高。因为对于未连接的udp,每次调用sendto都会隐含一次connect操作。
    11. inetd是一个互联网超级服务,echo,datetime等服务都是又他提供的。
    12. 对于费阻塞sockket,connect()调用会立即返回EINPROCESS,表示建立连接已经启动,但是三次握手还没有完成
    13. 调用close,只有文件描述符引用计数减为0才发送FIN,但是调用shutdown可以直接发送FIN。
    14. 调用getsockpet来获取套接字上发生的错误。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值