socket基本原理

1 从架构层面认识socket

 可以发现,socket是应用层和传输层之间的桥梁。

2 从网络io层面认识socket

网络io的本质是socket的读取。对于一次网络io请求,有两个阶段:

  a 等待对端传递的数据就绪,就绪就拷贝到系统内核缓冲区,如果没有就绪就一直等待就绪。

  b 将内核缓冲区中的数据拷贝到进程的地址空间中。

2.1 阻塞io

阻塞io是最常用的socket模型,并且默认情况下,所有socket都是阻塞的。

首先,进程要请求网络数据时,使用recvfrom系统调用函数,然后系统调用从用户空间转移到内核空间运行。在内核空间等待对端数据报的到达,到达后内核空间的缓冲区后,把数据报拷贝到用户空间应用的缓冲地址。这个过程完成后,就返回获取成功给进程,进程就开始处理数据报。

整个过程中,进程都是自我阻塞的,在等待数据就绪的过程中,进程只能等待,无法作其他事情。好处是数据一就绪,进程就马上可以进行下一步的处理。

扫描二维码关注公众号,回复: 2081487 查看本文章

猜你喜欢

转载自www.cnblogs.com/jabbok/p/9292631.html