IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 三次握手如何建立连接 -> 正文阅读

[网络协议]三次握手如何建立连接

应用层协议调用传输控制层
(包含长连接和短链接,http:1.0短链接,http:1.1长连接)
在这里插入图片描述

传输控制层有TCP、UDP两种协议
TCP干的事情,面向连接的、可靠的传输
什么是连接:双方可以开辟资源以及切换状态
连接的含义:
(1)创建连接,三次握手
传输控制层捏的数据包里含syn信号,由TCP进行处理,
即客户端发给服务端一个syn信号,服务端接收后发给客户端一个syn+ack信号,
表示自己确定搜到了,第三次客户端发给服务端一个ack信号,表示自己收到客户端的确认了
在liunx中可以使用

netstat -natp 

查看网络连接,确认网络连接状态
三次握手后。网络会进入到ESTABLISHBD 这个状态。
内存中会创建资源
进入数据包后会和四元组的规则匹配,将数据包转交给进程。
在这里插入图片描述
这个条目对程序员来说就是socket
socket:
两个app之间互连的过程,app读取的是该app客户端开辟资源中的接收队列,想写的时候是写在该app客户端内核开辟资源中的发送队列,这个会出现问题可能对方app没有发送数据,该app读取的时候读的是个空值,或者有nio阻塞的情况发生,读到一个0值。但可以看出app读出的都是自身内部和自己这个内核的队列进行交互。而内核是如何进行和另一个app内核交互,这个由内核自身协议完成。
在这里插入图片描述
程序选择io模型决定是阻塞还是io阻塞还是多重录用器
socket:套接字
套接字,就是插座插头,需要俩个东西,比如两个人一起玩才行
套接字(四元组)内包含源ip+port(总共可分配的有65535个) 目ip+port
绝对唯一的连接。
有两台主机,分别两个网卡IPA,IPB,起两个服务,一个客户端,一个服务端,两个服务发起连接要有一个监听的socket。什么是监听socket,本地ip地址3306无论外来任何地址任何端口都转给进程。


此时小明同学就会问了:客户端和服务端可以建立的连接是多少个
客户端端口号0:,服务端端口号80
客户端端口号1:服务端端口号:80
依次排开,改变的就是客户端端口号所以建立连接数就是65535个
在这里插入图片描述
客户端不变,服务端端口号改变又能建立65535个连接。
在这里插入图片描述
在这里插入图片描述
这个时候小明又问了:那我想建立十万个连接怎么弄。
那就再加一块网卡,一个不够加俩。这连接不久建立起来了嘛
(2)数据传输
(3)四次挥手
客户端想和服务端分手说拜拜了,
客户端会先给服务端一个消息,fin信号说我要分手,服务端给客户端回个消息fin+ack,哼,你居然要分手,然后越想越气,老娘不过了,又回了一个fin,这日子没法过了,老娘确定了要跟你分手。这个时候客户端就美滋滋的回个确认信号ack,得勒,拜拜了您内,打游戏去了。
在这里插入图片描述
三次握手、四次挥手验证

//tchpdump tcp抓取
//-nn 以数值形式抓取 -i 抓取的是哪个端口的
//eth0 以太网0号网卡,即本地连接。
//port --端口号80
tcpdump -nn -i eth0 port 80

在这里插入图片描述
该服务器获取请求

//curl 命令可以抓取请求 请求一个页面
//自动将www.baidu.com转换为ip地址
curl www.baidu.com 80

会自动获取一个页面
在这里插入图片描述
运行抓包程序
在这里插入图片描述

再运行抓包请求程序

//curl 命令可以抓取请求 请求一个页面
//自动将www.baidu.com转换为ip地址
curl www.baidu.com 80

会在抓包页面获取到ip地址请求过程
在这里插入图片描述
解析
从本机192.168.150.11.58254发送请求[S]
seq,到百度请求182.61.200.7.80
length 0 这个包的大小为0
对方发送确认消息182.61.200.7.80>192.168.150.11.58254[S.]
这个点 . 就是ack 抓取的包大小为0
然后本地再给百度服务端再发个包大小为0
三次握手确认联系

后面length 168 就是已经获取到东西了
传输数据

最后四段是在四次挥手
在这里插入图片描述

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-05-16 11:29:04  更:2022-05-16 11:29:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 10:36:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码