接上回2.2.2 posix api
2 传输数据
-
四线一⚪,kernel 协议栈
send- write, recv-read
如何知道send成功? 如果返回整数,只能证明data从user copy到内核kernel wmemory了
就是数据传输是异步的,send是从application copy到kernel,可能send多次,但是从kernel通过网络到另一台主机的kernel只发生了一次。recv也是类似的
听的要吐了,听不懂,太散了
ifconfig
可以查看mtu: 网络上最大传输单元
可以改
ifconfig ethx mtu 大小
-
recv区别
一次recv1000和recv10次每次100,效率差不多,
但是第二种,会导致比如收一次,剩900在buffer里会导致后面收变慢,但是buffer够大没问题
2.4.2详讲慢启动,滑动窗口,拥塞控制,延迟确认,超时重传,tcp描述两个协议栈kernel间网络通信
-
2个问题
- 如何加快传输速度
- 如何确保收到
每次data包里有: seqnum 本端ip发的人 和 acknum对端的ip收的人ip
见tcp详解书
先慢启动:指数增长,再线性增长
再拥塞控制 截断式下降 :推断出在路上 网络的buffer里的有多少没处理 交通堵塞嘛?
滑动窗口: 保证对方收到的不丢失