什么是网络IO

日期:2018-11-08       浏览:574

一 网络IO简介

互联网上的两台计算机客户端、服务器,通过网络物理链路打通一条数据双向传输的管道,客户端将请求数据通过传输管道发送到服务器,服务器接收到请求数据并进行相关业务处理,服务器再将处理结果通过传输管道发送给客户端,客户端接收到请求的处理结果,最后双方断开传输管道。

二 网络层次结构

2.1 描述

网络层次的划分由上往下可以分为以下四层:
网路层次 相关协议 功能描述
应用层 http/https/ftp... 针对具体业务选择
传输层 tcp/udp 传输数据包
网络层 ip 数据包路由
数据链路层 PPP/以太网... 针对具体物理链路

2.2 图示

网络四层协议与应用关系
网络四层协议与应用关系

三 网络请求及响应详解

3.1 描述

一次网络请求和响应的完整过程可以总结为以下步骤:
步骤 操作角色 描述
1 [客户端]系统内核 发起三次握手,打通网络连接
1.1 [客户端]系统内核 握手成功,客户端创建连接信息(socket对象)
2 [客户端]系统内核 将刚创建的客户端socket对象信息发送给服务器
2.1 [服务器]系统内核 创建客户端socket对象,保存到serverSocket对象上
2.2 [服务器]应用程序 监听到有新的socket连接,创建子线程,等待请求数据
3 [客户端]系统内核 发送请求数据
3.1 [服务器]系统内核 接收请求数据,将请求数据放到内核缓冲区 RecvQ
4 [服务器]应用程序 将系统内核缓冲区RecvQ内数据复制到用户空间
4.1 [服务器]应用程序 通过创建的客户端socket的InputStream#read()读取请求数据
4.2 [服务器]应用程序 处理业务逻辑
4.3 [服务器]应用程序 通过创建的客户端socket的 OutputStream#write()将处理结果写入用户空间缓冲区SendQ
4.4 [服务器]应用程序 将用户空间缓冲区SendQ内数据刷新到 系统内核缓冲区SendQ
5 [服务器]系统内核 将系统内核缓冲区SendQ 内响应数据发送到客户端
5.1 [客户端]系统内核 接收响应数据
6 [客户端]系统内核 四次挥手,断开socket连接
6.1 [服务器]应用程序 断开客户端连接,释放子线程
6.2 [服务器]系统内核 将客户端socket对象从serverSocket对象上移除

3.2 图示

BIO接收请求及返回响应时序图
BIO接收请求及返回响应时序图
扫码关注有惊喜

(转载本站文章请注明作者和出处 qbian)

xiaowei: 优秀!   (2018-11-08)   回复
luna 回复 xiaowei: 犀利!   (2018-11-09)   回复
张大佛爷: 水能载舟,亦可赛艇!   (2018-11-23)   回复
wanyue: 完美!   (2018-11-09)   回复

Copyright 2016 qbian. All Rights Reserved.

文章目录