白话网络连接之操作系统协议栈中套接字初识

前言
预计我会花一月时间用几篇文章来和大家一起畅游网络知识,概要如下:
1.我们先会从浏览器的工作方式来进行了解,从浏览器中输入URL,接着浏览器去对URL进行解析,然后按照不同的协议去封装请求消息,发送请求,之后浏览器会收到响应消息。
2.我们还会去了解消息数据是如何搬运的,协议栈会将消息打包并交给网卡,然后网卡会将包转为电信号并通过网线发送出去。
3.对于发送到网络的信号数据是如何进入互联网的,这里我们会了解集线器、交换机、路由器等设备,当路由器出发的数据进入互联网后,我们就要了解下网络运营商和互联往中的骨干网。
4.之后网络包数据终于来到了Web服务器所在的局域网中,接着它会遇到防火墙,防火墙会对数据进行检查,有些重复利用的数据包还会遇到缓存服务器,当然在一些大型网站中还会遇到分布式服务器上的负载均衡器等。
5.最终,我们的网络包数据来到了Web服务器,服务器是怎么处理的呢?也是会和客户端类似,也是由操作系统中的协议栈来完成数据解析,最终按照协议中的操作指示来把数据装入响应消息中,发回给客户端。当然回发的过程和前面是正好相反滴。

正片开始:
本篇接着上篇来说,让我们来深入到协议栈里面去看看。

  • 协议栈工作列表
    创建套接字、连接服务器、收发数据、从服务器断开连接并删除套接字
  • 创建套接字
    要说套接字,我们得先来看下协议栈得内部如下图:
    在这里插入图片描述
    图片中各层上下是有一定关系的,上面部分回向下面部分委派工作,下面部分接受委派的工作并实际执行。
    何为套接字?套接字是怎么工作的?其实套接字是一个抽象的概念,并不存在实体,可以这么理解套接字,套接字中记录了用于控制通信操作的各种控制信息,而协议栈则需要根据这些信息判断下一步的行动。
    还不理解套接字?在Windows中可以用netstat命令显示套接字内容,如下图:
    在这里插入图片描述
    哈哈,看了上图还不理解么?好,那就送佛送到西,白话透彻点。这里每行都代表一条套接字,协议有TCP和UDP,接着是本地地址和外部地址,外部地址0.0.0.0表示没有建立通信连接,状态列表示通信状态,有LISTENING等待对方连接状态和ESTABLISHED完成连接并在进行数据通信中,最后一列PID是使用该条套接字的程序标识符,可以用该标识符在任务管理器中查询到PID对应的应用程序。
  • 本篇结语
    本篇主要给大家介绍了何为套接字,下篇就要聊聊应用程序是如何通过套接字来通信的,敬请期待。

猜你喜欢

转载自blog.csdn.net/alspd_zhangpan/article/details/107122242
今日推荐