Network

基础知识
我们是把物理传输层看成第一层,电气信号通讯。
以太网链路层看成第二层,mac地址通信。
ARP/RARP 是mac地址/ip地址的转换协议,所以我们准确的称其为2.5层。
IP属于三层,ip地址通信。
Tcp/udp属于四层,端对端。
1.接收端只要将数据收到接收缓存中,就会确认,并不一定要等待应用程序调用recv
recv函数仅仅是copy数据,真正的接收数据是协议来完成的),recv函数返回其实际copy的字节数
2.阻塞模式下send并不是说直到你发送数据到对方机器才返回的意思,它是说把你要发送的数据放入发送缓冲后,就直接返回。如果是非阻塞send,如发送缓冲区没有了,他就直接返回,而阻塞时会等待发送缓冲区有空间,再返回。
IP分片
链路层具有最大传输单元MTU这个特性,它限制了数据帧的最大长度,不同的网络类型都有一个上限值。以太网的MTU是1500,你可以用 netstat -i 命令查看这个值。如果IP层有数据包要传,而且数据包的长度超过了MTU,那么IP层就要对数据包进行分片(fragmentation)操作,使每一片的长度都小于或等于MTU
TCP的滑动窗口大小实际上就是socket的接收缓冲区大小的字节数
由于缓冲区大小在TCP头部只有16位来表示,所以它的最大值是65536,但是对于一些情况来说需要使用更大的滑动窗口,这时候就要使用扩展的滑动窗口,如光纤高速通信网络,或者是卫星长连接网络,需要窗口尽可能的大。这时会使用扩展的32位的滑动窗口大小。
网络性能指标
平均传输率,峰谷传输率,峰值传输率,延时
TCP中的帧同步
TCP不提供帧同步,这使得它对于面向字节流的协议是完美的。这是 TCP与 UDP(User Datagram Protocol,用户数据报协议)的一个重要区别。UDP是面向消息的协议,它保留发送者和接收者之间的消息边界。TCP是一个面向流的协议,它假定正在通信的数据是无结构的,如图 1所示。

图 1的上部说明一个 UDP客户端和服务器。左边的对等层完成两个套接字的写操作,每个 100字节。协议栈的 UDP层追踪写的数量,并确保当右边的接收者通过套接字获取数据时,它以同样数量的字节到达。换句话说,为读者保留了写者提供的消息边界。
现在,看图 1的底部.它为 TCP层演示了相同粒度的写操作。两个独立的写操作(每个 100字节)写入流套接字。但在本例中,流套接字的读者得到的是 200字节。协议栈的 TCP层聚合了两次写操作。这种聚合可以发生在 TCP/IP协议栈的发送者或接收者中任何一方。重要的是,要注意到聚合也许不会发生 —— TCP只保证数据的有序发送。
对大多数开发人员来说,该陷阱会引起困惑。您想要获得 TCP的可靠性和 UDP的帧同步。除非改用其他的传输协议,比如流传输控制协议(STCP),否则就要求应用层开发人员来实现缓冲和分段功能。
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值