深入分析java web内幕(java IO 工作机制(2)(连接建立和断开的状态变化))

java IO 工作机制(2)(补充1)(连接建立和断开的状态变化)

java IO 工作机制(2)(补充2)(TCP首部格式)

1,tcp状态转换图:

好处:

2,影响网络传输的因素:

PS:
tcp传输数据通过窗口来控制。 窗口即tcp缓存的大小。 窗口的大小=带宽 x 响应时间

 数据传输:

PS:
阻塞:当发送队列填满就发送给接收队列,接收队列被填满,发送队列的write()方法会阻塞,直到接收队列有空间。

new io工作机制:

PS:
传统socket:
数据通过socket的输入输出流传输数据,流的缓存由发送队列和接收队列决定。 (队列大小应该就是上面提到的窗口,由带宽和响应时间决定) 当数据大于发送队列长度不能控制,由系统将数据分割,需要用户空间数据和内核地址空间进行切换。
newIO:
数据通过channel的Buffer来传输,Selector来调度。 Buffer相当于发送/接收队列,但buffer大小可以主动控制。

 

 

tomcat和jetty服务器使用阻塞模式处理连接,使用NIO处理请求。

 基于NIO的socket处理过程:

 Buffer工作方式:

capacity:容量
position:将操作元素的位置,读写可以进行转换
limit:实际数据大小
mark:标记位置

以上是buffer写读索引变化。

 

缓存分两部分:
一,系统缓存(tcp的接收/发送队列);
二,应用缓存(通常程序员控制)

buffer 提供了两种形式缓存支持。
直接操作系统缓存buffer即DirectByteBuffer,但可能存在内存泄露。

 

posted @ 2018-08-22 01:33  假程序猿  阅读(167)  评论(0)    收藏  举报