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 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 理解socket tcp http tomcat linux的关系 -> 正文阅读

[网络协议]理解socket tcp http tomcat linux的关系

理解socket tcp http tomcat linux的关系

背景

前几天看了一个文章一台Linux服务器最多能支撑多少个TCP连接?。这个问题问道我,我连切入点都没有,揪原因是因为对socket、tcp、http等概念没有区分开,一知半解。这几天梳理了一下,打算记录下来。

问题列表

tcp socket的关系?
tcp http的关系?
tcp tcp/ip的关系

tcp的长短连接的区别? 
Http长连接和TCP长连接的区别?

一个 TCP 连接处理多个几个 HTTP 请求?
tomcat 这种的的web容器可以建立多少tcp连接?
linux系统可以建立多少tcp连接?

回答思路

网络上协议类的文章很多只抛结论,东拼西凑,需通过实验验证真伪

tcp socket的关系?

socket:英文意思:插头、插孔。网络中不同主机上的应用进程之间进行双向通信的端点的抽象。

tcp:Transmission Control Protocol ,传输控制协议。熟悉tcp三次握手、四次断开,主要是应对传输过程中,可能出现的不稳定情况。

类比电脑通过插座从电厂取电:插座的socket、tcp是电的传输

电脑(服务端)》插座 (socket)》电线(tcp) =》插座(socket)=》电厂

tcp tcp/ip的关系

tcp/ip:Transmission Control Protocol/Internet Protocol,传输控制协议\网络协议。是指为不同网络之间通信的一个协议簇。不仅有tcp ip 还有ftp、smtp、http等协议,报文通过协议头进行区分。常说的四层结构:链路层、网络层、传输层、应用层就就tcp/ip的协议簇的分层。

tcp对应在tcp/ip传输层的协议

tcp http的关系?

http:Hyper Text Transfer Protocol,超文本传输协议。架构在tcp上的,实现简单发送-响应的网络协议。

可以看下面的wireshark抓包详细了解他们的关系↓↓↓↓↓

wireshark抓包

tcp/ip的四层抽象

  • tcp三次握手包

在这里插入图片描述

抓包可以看到任意一个网络请求,都分三层或四层。

物理链路层:写得是物理设备,接口等信息

网络层:ip版本 源、目的地址

传输层:TCP还是什么传输协议

应用层: ,因为tcp处于握手建联,所以上层的应用层还在等待中

  • http报文包

在这里插入图片描述

tcp建立连接后,就可以有应用层的信息,这里是http的应用层信息,可以看到访文的是8080的端口

http和tcp关系

上图可以看到,http 和 tcp一个是应用层,一个是传输层协议。是上下游关系。

tcp三次握手、四次断开

发送两个http求解,期间进行抓包,可以看到三次握手和四次断开。

在这里插入图片描述

访问一个http的接口,触发三次握手。

如果server端没有特殊设置,HTTP的keep=Alive时间是60s。60s后触发三次握手

在这里插入图片描述

tcp的长短连接的区别?

短链接:client和server完成一次通信,就close。短链接一般由client端关闭

长连接:出去单次短链接,就是长连接。http协议,默认的tcp长连接是60s。如果长连接时间过长,server将需要保留大量的长连接,server压力不小。长连接一般由server关闭。

Http长连接和TCP长连接的区别?

http的长连接:使用 keep-alive配置,传输层是需要tcp的长连接。http的长连接需要tcp的长连接。

tcp的长连接:有心跳机制,一些旧系统就使用几条特定的长连接做传输,理论上永远不断,了解不多

tomcat 这种的的web容器可以建立多少tcp连接?

由于没有读源码,也没由细究,只是试了一下tomcat的控制tcp连接

tomcat有几个关键指标:tomcat的最大连接数,可以解决为餐厅吃饭,餐厅的排号最大值,超过就不能排队了。

# 最大线程数:餐厅可同时服务座位
server.tomcat.threads.max=10
# 最大连接数:餐厅所有座位
server.tomcat.max-connections=8192
# 排队的请求个数:餐厅的排号最大值,超过就不能排队了
server.tomcat.accept-count=50

当超过了max-connections(座位满了),就再看accept-count(排队拿号),如果排队再满了,就不丢弃。

所以能最大数量是=threads.max + max-connections +accept-count

实验

代码实现

写一个springboot的代码,接口/tcpopen/{sleeptime},使用Jmete使用多线程调用此接口,传入线程睡眠时间模拟业务调用等待,让http继续保存连接。由于Jmete是多线程,所以tcp不会重用。

@RestController
public class tpcLearn {

    @GetMapping("/opentcp/{time}")
    public String openTcp(@PathVariable(value = "time") Long time) {
        System.out.println("hava a visit" + LocalDateTime.now() + ",sleep:" + time);
        try {
            // Thread随眠,模拟业务逻辑
            Thread.sleep(time);
        } catch (InterruptedException e) {
        }
        System.out.println("pass-------");
        return "openTcp:" + LocalDateTime.now();
    }
}

  • max-connections默认8192,可以建立8000多个tcp

在这里插入图片描述

  • max-connections=5,控制tcp连接数量
server.tomcat.threads.max=1
server.tomcat.max-connections=5
server.tomcat.accept-count=10

这时候,1000个线程,只能由16个能建立连接。其余的连接Connection timed out: connect。

1+5+10=16

在这里插入图片描述

  • max-connections=81920,连接更多的tcp

比如我设置为8w个max-connections,使用Jmete建立了10229的连接数,再多的话,内存不足,就卡死了。如果内存足够,就看操作系统的限制了。

在这里插入图片描述

linux系统可以建立多少tcp连接?

篇幅原因,自行查看一台Linux服务器最多能支撑多少个TCP连接?

后记

今天是2022年10月24日,特意写一个博客,程序员节日快乐。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-10-31 12:34:57  更:2022-10-31 12:37:57 
 
开发: 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年12日历 -2024/12/28 5:45:37-

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