网络知识点

1 假如数值是0x037FB4C7 (decimal 58,700,999),字节序列为037FB4C7为大端编码,反过来为小端编码。理解方式以数值表示为标准,一致则为大端,否则小端。其实大端和小端的意义就在于字节序列和多字节数值的转换。

字节序列指的就是在内存中的布局,好比用byte数组表示字节序列,那么从0-n,内存地址递增。

很详细的介绍

http://my.oschina.net/alphajay/blog/5478

2 长连接与短连接 

由于创建socket需要消耗资源,所以在某些场景下面,比如点对点,会使用长连接的来减少这部分消耗。而在一个服务器对应海量客户端的情况下则采用短连接,因为一个服务器同时维护大量长连接会吃不消。

http://jiangzhengjun.iteye.com/blog/502966

http://rdc.taobao.com/blog/cs/?p=1062

3 滑动窗口协议

TCP的成块数据流采用滑动窗口协议来控制,当数据发送方和数据接收方的处理数据差距较大的时候,这个协议可以有效的控制数据传输节奏。

下图表示从s v r 4传输8192个字节到b s d i的TCP报文段交互过程。

1-3表示建立连接的三次握手。其中mss表示max segment size,最大分段大小,表示每个报文段最大只能传输1024个字节。

4-6表示,svr4连续发送3个1kb字节到bsd。

7-8表示bsd确认已经收到的字节数,ack-1的值即为已经确认收到的字节数。win表示窗口大小。


下图表示一个快发送方-》慢接收方的数据传输过程。



 发送方发送 4个背靠背( b a c k - t o - b a c k)的数据报文段去填充接收方的窗口,然后停下来

等待一个 A C K。接收方发送 A C K(报文段 8) ,但通告其窗口大小为 0,这说明接收方已收到

所有数据,但这些数据都在接收方的 T C P 缓冲区,因为应用程序还没有机会读取这些数据。

另一个A C K(称为窗口更新)在 17.4 ms 后发送,表明接收方现在可以接收另外的 4 0 9 6个字节

的数据。虽然这看起来像一个 A C K,但由于它并不确认任何新数据,只是用来增加窗口的右

边沿,因此被称为窗口更新。

      下图为滑动窗口协议的示意图:


在这个图中,我们将字节从 1至11进行标号。接收方通告的窗口称为提出的窗口( o ff e r e d

w i n d o w) ,它覆盖了从第 4字节到第 9字节的区域,表明接收方已经确认了包括第 3字节在内的

数据,且通告窗口大小为 6。回顾第 1 7章,我们知道窗口大小是与确认序号相对应的。发送方

计算它的可用窗口,该窗口表明多少数据可以立即被发送。

当接收方确认数据后,这个滑动窗口不时地向右移动。窗口两个边沿的相对运动增加或

减少了窗口的大小。我们使用三个术语来描述窗口左右边沿的运动:

  • 称窗口左边沿向右边沿靠近为窗口合拢。这种现象发生在数据被发送和确认时。
  •  当窗口右边沿向右移动时将允许发送更多的数据,我们称之为窗口张开。这种现象发生在另一端的接收进程读取已经确认的数据并释放了 T C P的接收缓存时。
  •  当右边沿向左移动时,我们称之为窗口收缩。 Host Requirements RFC强烈建议不要使用这种方式。但 T C P必须能够在某一端产生这种情况时进行处理。

窗口大小能够在一定程度上影响数据传输吞吐量,4 . 2 B S D默认设置发送和接受缓冲区的大小为2 0 4 8个字节。在4 . 3 B S D中双方被增加为4 0 9 6 个字节。

 

通告窗口 awnd

目的:发送接收能力匹配

拥塞窗口 cwnd

目的:避免中间网络拥塞

慢启动阶段,成倍增长。初始窗口。

拥塞避免阶段,线性增长

实际窗口大小 swnd = min (awndcwnd)

实际带宽 = ( swnd * 1518 ) / RTT

例如,千兆网卡 117MB/scm4cm6间的RTT0.8ms。假如swnd = 10,那么发送速率是 10 * 1518 Byte/ 0.8ms = 20MB/s

4 socket接口

当应用程序调用send方法时,仅仅是把数据从应用程序空间拷贝到内核的TCP send 缓冲区,具体什么时候发送,如何发送由操作系统的tcp实现决定。同理recv方法只是把tcp recv缓存区的数据拷贝到应用程序空间,真正的recv操作也是由操作系统的TCP实现决定的

5 tcp协议层次图


MTUMax Transmission Unit),ethernet frame最大承载大小. 1500
MSSMax Segment Size),TCPsegment最大承载大小. 1460

RTTRound Trip Time),往返延时  

猜你喜欢

转载自hill007299.iteye.com/blog/1434668