Netty的复习【1】

OSI七层模型【记不太清了,要好好复习一下】

null

OSI七层模型各层作用

物理层

物理层并不是物理媒体本身,它只是开放系统中利用物理媒体实现物理连接的功能描述和执行连接的规程。
DTE、DCE
DTE数据终端:手机
DCE数据通信设备:光猫

作用

1.提供数据传输的实际通道
2.传输数据

数据链路层

数据链路的建立,拆除,对数据的检错,纠错是数据链路层的基本任务。
网卡可以看作独立的数据链路层产品。

网络层

路由选择和中继,在一条数据链路上复用多条网络连接

传输层

定义传输数据的协议端口号,以及流控和差错校验。

会话层

建立、管理、终止会话

表示层

把应用层提供的信息变换为能够共同理解的形式

应用层

网络服务与最终用户的一个接口
v2854e3df8ea850c977c30cb1deb1f64dbr.jpg

TCP/IP协议

image.png

端口号:端口号用来识别同一台计算机中进行通信的不同应用程序。因此,也被称为程序地址。
image.png

image.png

三次握手

image.png

首先标志位SYN置为1,客户端将这个报文发送给服务器端。
然后客户端的状态变为SYN_CENT,然后服务端把SYN,ACK标志位置为1,大写的ACK和小写的ack并不一样,小写的ack表示一个具体的值,seq=K中的K值为随机数,然后服务端的状态改为SYN_REVD。
客户端检查ack值,然后把状态改为ESTABLISHED,再发送ACK标志位和ack,等待服务器端校验ack的值,然后服务器端和客户端都改为ESTABLISHED状态,表示建立连接。

四次挥手

2MSL,报文最大生存时间
image.png

TCP/IP中的数据包

image.png

TCP中通过序列化与确认应答提高可靠性

image.png
这种思想可以在以后网络开发中用到

HTTP请求的传输过程

image.png

一次完整的http请求的7个过程

image.png

HTTP报文结构

image.png

请求报文结构

image.png

应答报文结构

image.png

Socket是什么

socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口
image.png

Linux网络IO模型

image.png

同步和异步,阻塞和非阻塞

同步≠阻塞
异步≠非阻塞

引用知乎上的对 同步和异步,阻塞和非阻塞的形容
老张爱喝茶,废话不说,煮开水。
出场人物:老张,水壶两把(普通水壶,简称水壶;会响的水壶,简称响水壶)。
1 老张把水壶放到火上,立等水开。(同步阻塞)
老张觉得自己有点傻
2 老张把水壶放到火上,去客厅看电视,时不时去厨房看看水开没有。(同步非阻塞)
老张还是觉得自己有点傻,于是变高端了,买了把会响笛的那种水壶。水开之后,能大声发出嘀~~~~的噪音。
3 老张把响水壶放到火上,立等水开。(异步阻塞)
老张觉得这样傻等意义不大
4 老张把响水壶放到火上,去客厅看电视,水壶响之前不再去看它了,响了再去拿壶。(异步非阻塞)
老张觉得自己聪明了。

5个I/O模型的比较

image.png

select、poll、epoll的区别

select在打开的连接数上有限制,poll和select在实现上没有什么本质区别,都是链表。epoll是事件驱动,也就是当前活着的有数据的才会有数据通知。在消息传递动作上,select和poll需要把消息拷贝到内存上面,有一个拷贝动作 ,而epoll可以让操作系统和应用共享一块内存。

1.支持一个进程所能打开的最大连接数
select:单个进程所能打开的最大连接数有FD_SETSIZE宏定义,其大小是32个整数的大小(在32位机器上,大小就是3232,同理64位机器上FD_SETSIZE为3264),可以对进行修改,然后重新编译内核,但是性能可能会收到影响。
poll:poll本质上和select没有区别,但是它没有最大连接数的限制,原因是因为基于链表来存储的。
epoll:连接数有上限,但是很大,1G内存的机器可以打开10万左右的连接,2G内存的机器可以打开20万左右的连接。
2.FD剧增后带来的IO效率问题
select:因为每次调用时都会对连接进行线性遍历,所以随着FD的增加会造成遍历速度慢的线性下降性能问题
poll:同上
epoll:因为epoll内核中实现是根据每个id上的callback函数来实现的,只有活跃的socket才会主动调用callback,所以在socket较少的情况下,使用epoll没有前面两者线性下降的性能问题,但是所有socket都很活跃的情况下,可能会有性能问题
3.消息传递方式
select:内核需要将消息传递到用户空间,都需要内核拷贝动作
poll:同上
epoll:epoll通过内核和用户空间共享一块内存来实现的。

# Netty 

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×