第八周 - 学习总结

用户头像
molly
关注
发布于: 2020 年 07 月 29 日

网络通信

Web 请求的一次网络通信历程





用户虽然是发起一次网络请求,但是在整个请求的生命周期里面是由很多次网络连接、很多个不同服务器之间的网络通信构成的,即:形成了一大堆的网络通信,最后才能完成用户的一次Web请求。

OSI七层模型和TCP/IP四层模型





TCP/IP四层协议结构





网络数据包格式





非阻塞网络I/O

计算机之间如何进行网络请求?

  • 编程是在操作系统之间进行的,而操作系统提供了编程接口Socket;

  • 程序中new一个socket并指定一个端口,操作就会帮我们监听这个端口;其他的网络通信去连接这个端口;

非阻塞I/O(Non-Blocking I/O)

非阻塞I/O:I/O操作产即返回,发起线程不会阻塞等待。

Java NIO(New I/O)

是新的I/O,其实是有阻塞的。

几个重要角色:

  • Selector(选择器) - 去查询所有的Channel上发生的事件是什么样子的;

  • Buffer - 此处的Buffer是应用程序管理的;

  • SelectableChannel(可选择的通道) - 其实就是一个socket

  • SelectionKey - 表示Channel上的状态(即:发生的事件是什么)

Java IO 与 NIO 比较

  • NIO - 对于应用线程来说是 新IO/异步IO/无阻塞IO(即:多路复用的线程)

  • 阻塞 - 是跟线程相关的

  • 同步 - 有可能会引起阻塞

  • 异步 - 是不会引起阻塞,因为不用等待;

系统I/O复用方式

select、poll、epoll



用户头像

molly

关注

还未添加个人签名 2017.12.14 加入

还未添加个人简介

评论

发布
暂无评论
第八周 - 学习总结