在计算机网络的应用层你了解多少 , 是否知道socket套接字有哪些?知道你的网站为什么访问慢吗?知道为什么fidder、Charles能抓到你的包吗?今天我们就来一一揭秘!
一、socket()套接字有哪些?套接字(socket)是网络中不同主机上的应用进程进行双向通信的端口的抽象 , 网络进程通信的一端就是一个套接字 , 不同主机上的进程就是通过套接字发送数据报来进行通信的 , 如TCP协议使用主机的IP地址 端口号来作为TCP连接的端点 , 这个端点就是套接字 。
套接字主要有以下三种类型:
- 流套接字(SOCK_STREAM): 流套接字基于TCP传输协议 , 主要用于面向连接的、可靠的数据传输服务 , 由于TCP协议的特点 , 使用流套接字进行通信时能够保证数据无差错、无重复传送、并按顺序接收 , 通信双方不需要在程序中进行相应的处理 。
- 数据报套接字(SOCK_DGRAM): 因为UDP协议传输的是数据报 , 所以数据报套接字是基于UDP传输协议的 , 对应于无连接的UDP服务应用 , 该服务并不能保证数据传输的可靠性 , 也无法保证数据按照顺序到达 , 同时通信两端不需要建立长时间的连接 , UDP客户端发送一个数据给服务器后 , 就可以使用同一个套接字给另一个服务器发送数据 , 当使用UDP套接字时 , 丢包等问题需要在程序中进行处理 。
- 原始套接字(SOCK_RAW): 由于流套接字和数据报套接字只能抓取TCP和UDP协议的数据 , 当需要处理非传输层数据包或操作系统无法处理的数据包时 , 就需要使用原始套接字来发送 。
- URL(统一资源定位符) 也可以说是我们平常上网时输入的网址 , 它标识一个互联网资源 , 并且指定其进行操作或获取该资源的方法 , 例如CSDN的网址https://blog.csdn.net , 该URL标识一个特定资源并表示该资源的某种形式可以通过HTTPS协议从相应的位置获取 。
- URL是URI的子集 , 两者都定义了资源是什么?而URL还定义了如何能够访问到资源 , URI是一种语义上的抽象概念 , 可以是绝对的也可以是相对的 。而URL则必须提供足够的信息来定位 , 是绝对的 ,
三、为什么 fidder , charles 能抓到你的包【抓取数据包的过程】假如我们需要抓取客户端的数据包 , 需要监控客户端与服务器交互之间的网络节点 , 监控其中任意一个网络节点(网卡) , 获取所有经过网卡中的数据 , 对这些数据按照网络协议进行解析 , 这就是抓包的基本原理 。而中间的网络节点不受我们控制 , 是基本无法实现抓包的 , 因此只能在客户端与服务器之间进行抓包 。
① 当采用抓包工具抓取 HTTP 数据包时 , 过程如下:
- 首先抓包工具会提出代理服务 , 客户端需要连接该代理;
- 客户端发出 HTTP 请求时 , 会经过抓包工具的代理 , 抓包工具将请求的原文进行展示;
- 抓包工具使用该原文将请求发送给服务器;
- 服务器返回结果给抓包工具 , 抓包工具将返回结果进行展示;
- 抓包工具将服务器返回的结果原样返回给客户端 。
② 当抓取 HTTPS 数据包时:
- 客户端连接抓包工具提供的代理服务 , 并安装抓包工具的根证书;
- 客户端发出 HTTPS 请求 , 抓包工具模拟服务器与客户端进行 TLS握手交换密钥等流程;
- 抓包工具发送一个 HTTPS 请求给客户端请求的目标服务器 , 并与目标服务器进行 TLS 握手交换密钥等流程;
- 客户端使用与抓包工具协定好的密钥加密数据后发送给抓包工具;
秒懂生活扩展阅读
- 鲁豫是怎么瘦下来的 鲁豫为什么那么瘦呢
- 为什么调整为5天?年放假安排有三大考量
- 海贼王哥尔D罗杰为什么要自首
- 梅西评价为什么那么高
- 朱砂为什么是粉红色的
- 为什么灾难之后会有瘟疫
- 狼吞虎咽打一个生肖 狼吞虎咽打一生肖
- 小蛮为什么是女娲后人
- 古代的刀上为什么带个环
- 谁知道有关于武术上的一些名言