【网络基础知识】Http协议与TCP协议简单理解

HTTP、TCP网络协议知识整理 git原文不定期更新地址:https://gitee.com/H_david/interview-record/tree/master/src/need_learn/theoretical_knowledge/Http TCP/IP四层网络模型 TCP/IP简介 TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在对各不同网络间实现信息传输的协议簇。 TCP/IP协议不仅仅指的是TCP和IP两个协议,而是指一个有F 阅读详情

在java编写代码,很多时候会遇到Http协议或者TCP协议,这里做一个简单的理解。

TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性。Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求。Http会通过TCP建立起一个到服务器的连接通道,当本次请求需要的数据完毕后,Http会立即将TCP连接断开,这个过程是很短的。所以Http连接是一种短连接,是一种无状态的连接。所谓的无状态,是指浏览器每次向服务器发起请求的时候,不是通过一个连接,而是每次都建立一个新的连接。如果是一个连接的话,服务器进程中就能保持住这个连接并且在内存中记住一些信息状态。而每次请求结束后,连接就关闭,相关的内容就释放了,所以记不住任何状态,成为无状态连接。

随着时间的推移,html页面变得复杂了,里面可能嵌入了很多图片,这时候每次访问图片都需要建立一次tcp连接就显得低效了。因此Keep-Alive被提出用来解决效率低的问题。从HTTP/1.1起,默认都开启了Keep-Alive,保持连接特性,简单地说,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。虽然这里使用TCP连接保持了一段时间,但是这个时间是有限范围的,到了时间点依然是会关闭的,所以我们还把其看做是每次连接完成后就会关闭。后来,通过Session, Cookie等相关技术,也能保持一些用户的状态。但是还是每次都使用一个连接,依然是无状态连接。

以前有个概念很容忍搞不清楚。就是为什么Http是无状态的短连接,而TCP是有状态的长连接?Http不是建立在TCP的基础上吗,为什么还能是短连接?现在明白了,Http就是在每次请求完成后就把TCP连接关了,所以是短连接。而我们直接通过Socket编程使用TCP协议的时候,因为我们自己可以通过代码区控制什么时候打开连接什么时候关闭连接,只要我们不通过代码把连接关闭,这个连接就会在客户端和服务端的进程中一直存在,相关状态数据会一直保存着。

 

 

在java中会有Socket,实际上socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API)。Socket的出现只是使得程序员更方便地使用TCP/IP协议栈而已,是对TCP/IP协议的抽象,从而形成了我们知道的一些最基本的函数接口,比如create、listen、connect、accept、send、read和write等等。

 

 

比较形象的描述:HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。对于从java编程的角度来讲,为了方便,你可以直接选择已经制造好的轿车Http来与服务器交互。但是有时候往往因为环境因素或者其他的一些定制的请求,必须要使用TCP协议,这时就需要使用Socket编程,然后自己去处理获取的数据。就像是你用已有的发动机,自己造了一辆卡车,去从服务器交互。


HTTP/1.0和HTTP/1.1都把TCP作为底层的传输协议。HTTP客户首先发起建立与服务器TCP连接。一旦建立连接,浏览器进程和服务器进程就可以通过各自的套接字(源IP地址和目的IP地址以及源端口号和目的端口号的组合称为套接字。其用于标识客户端请求的服务器和服务。)来访问TCP。如前所述,客户端套接字是客户进程和TCP连接之间的“门”,服务器端套接字是服务器进程和同一TCP连接之间的“门”。客户往自己的套接字发送HTTP请求消息,也从自己的套接字接收HTTP响应消息。类似地,服务器从自己的套接字接收HTTP请求消息,也往自己的套接字发送HTTP响应消息。客户或服务器一旦把某个消息送入各自的套接字,这个消息就完全落入TCP的控制之中。TCP给HTTP提供一个可靠的数据传输服务;这意味着由客户发出的每个HTTP请求消息最终将无损地到达服务器,由服务器发出的每个HTTP响应消息最终也将无损地到达客户。

java代码连接远程数据库用的是TCP协议。每次new 一个connection的时候,connection.open就打开了这个TCP连接。connection.Close的时候就关闭了这个连接。FTP的底层也是TCP, 不过是长连接的。传输大文件比较快。 需要看具体场景。在服务器端,如果程序是采取的长连接的方式,那么就能控制同时连接到这个服务器的连接个数,防止同时有多个连接。但是采取短连接的方式,那么就不能控制同时连接到这个服务器上的连接的个数,这也是一个优点,可以同时处理大量连接请求。但是如果连接请求量太大的话,可能造成服务器停止工作。

 

 

WebService不需要连接,一秒中至少可以支持上万/十万的请求,每次请求然后释放,没有空余的内存消耗。一般不会限制同时连接的个数,这是优势。Message Queue需要建立连接, 支持上千的连接就很吃力了。因为每个连接即使没有在请求数据,也会在内存中占用一定的空间存储。会限制,比如SQL Server数据库服务器,一般最多同时连接16个。

 

 

 

Http协议一定通过指定的端口,80,所以一般计算机上不会限制这个端口,所以Http协议能够顺利通过所有机器上的防火墙。而使用Socket编程的话,就需要自己指定特定的端口,那么很可能这个端口是在某个环境中禁用的,那么就无法穿透防火墙。IIS使用的是80端口,也就是这个程序一直在监听着这个端口。一旦发现有人要建立到这个端口的连接,他就会响应,然后建立连接。这里说的连接都是短连接。所以你对服务器上的网址的请求,都是通过80端口送到网站程序的。然后通过这个端口发送的客户端浏览器。

Socket与HTTP解析 1.网络基础网络分层:计算机网络分层模型有两种 OSI参考模型 TCP/IP参考模型 网络层:根据IP查找到目的地址的主机 运输层:通过端口把数据发送给目的主机,实现进程间通信 2.端口端口规定有16位,及计算机有2的16次方65536个端口。3.C/S架构定义:即客户端/服务端,软件体系架构作用:利用客户端和服务端的硬件资源,将任务合理的分配到客户端和服务端来实现,降低开销 Soc 阅读详情

相关推荐

【牛客专项练习】计算机基础—网络基础

计算机基础——网络基础

weixin_42221791的博客 2266

TCP、HTTP详解

TCP和HTTP   TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,采用三次握手建立连接,四次挥手终止连接。   TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去,服务器和客户端均可主动发起断开连接的请求。   HTTP(Hypertext Transfer P...

博学de叫兽 3万+

TCP和HTTP的区别

总体来说,TCP和HTTP都是协议,但是属于网络协议的不同层次,TCP属于四层,HTTP属于七层,另外HTTP是要基于TCP的,当然最新的HTTP3.0也是基于UDP的变种,不过目前还不是主流,相信未来很有可能会取代TCP称为HTTP的新宠儿。

永远sayYES的博客 8377

http协议与tcp协议区别

http协议与tcp协议区别 1、性质不同: http是一个简单的请求-响应协议。TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。 2、连接不同: TCP连接到不同但互连的计算机通信网络的主计算机中的成对进程之间依靠TCP提供可靠的通信服务。http通常运行在TCP之上。指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。 3、功能不同: 当应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,TCP则把数据流分割成适当长度的报文段,最大传输段大小(MSS)通常受该计算机连接的网

修炼中 2万+

2024年java面试--网络基础篇(1)

最大值1500 称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU,如果一个数据包从以太网路由到拨号链路上,数据包度大于拨号链路的MTU了,则需要对数据包进行分片fragmentation)。它指定了数据报的生存时间。序号用来标识从T C P发端向T C P收端发送的数据字节流,它表示在这个报文段中的的第一个数据字节。TCP将接收到的数据包保存在接收缓存里,如果TCP接收数据包到缓存的速度大于应用程序从缓存中读取数据包的速度,多个包就会被缓存,应用程序就有可能读取到多个首尾相接粘到一起的包。

xuxu96 482

Android面试题(六)高频网络基础面试题

写出OSI七层模型和TCP/IP的五层模型(参考): OSI(Open System InterConnect),即开放系统互联。一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互连模型。ISO为了使网络应用更好的普及,退出来OSI参考模型。其含义就是推荐所有公司都是用这个模型来规范网络,这样所有公司都有相同的规范,就能互联了。 OSI定义了网络互联的七层模型(...

红日 1199

HTTP与TCP区别

1、TCP对应与传输层、而HTTP对应于应用层; 2、HTTP底层是利用TCP协议传输的,所以支持http也就一定支持TCP;

xc_blog 2万+

五分钟搞懂游戏开发中的抗锯齿算法

常见抗锯齿算法总结锯齿由来抗锯齿算法SSAAMSAACSAA 锯齿由来 场景的定义在三维空间中是连续的,而最终显示的像素则是一个离散的二维数组,这是计算机屏幕产生锯齿的原因。在计算机处理图形的过程中(渲染管线了解一下),有一个非常重要的阶段,就是光栅化,光栅化主要的作用是将顶点数据的不连续性通过插值计算,将两个顶点之间不存在的点进行弥补,然后实现到屏幕像素点上的一一映射。如图,现在要在屏幕上绘制一...

绿洲守望者 1万+

【网络安全】HTTP协议-第1课-HTTP协议-基础

学习目标 一、万维网的诞生与发展 1.万维网的诞生与发展 2.HTTP协议诞生与发展 二、网络基础 1.TCP/IP分层传输 1)TCP/IP协议 2)封装与拆封 2.HTTP相关的协议 1)IP协议 2)TCP协议 3)DNS协议 三、URL和URI 1.URL(统一资源定位符) 2.URI(统一资源标识符) 3.URL和URI的对比

享你所想 1640

超级超级细的CLIP官方模型解读及代码逐行讲解

本文详细解析了OpenAI开源的CLIP模型代码架构。文章首先介绍模型概念,包括训练时通过对称损失计算图像-文本相似度,预测时通过余弦相似度匹配最佳文本。随后重点解析各模块代码实现:LayerNorm改进、QuickGELU激活函数、Transformer编码器结构、ViT图像编码器的特征提取过程、文本编码器的掩码机制和特征投影。最后阐述CLIP整体架构如何整合视觉和文本编码器,并详细说明了特征归一化和相似度计算的关键实现。全文通过代码级解读帮助读者深入理解CLIP模型的实现细节。

m0_64595440的博客 2425

一种基于改进YOLOv8并与ORB-SLAM3融合的动态环境密集点云同步定位与建图(SLAM)方法

文章提出了一种基于改进 YOLOv8 与 ORB-SLAM3 融合的动态环境稠密点云 SLAM 方法,通过引入GSConv 卷积模块和VoVGSCSP 特征融合模块优化 YOLOv8 的轻量性,结合实时目标检测与语义分割技术去除动态特征点,显著提升了动态场景下的位姿估计精度。

2401_87345388的博客 1939

测试面试题集-网络基础

VOL 121082020-05今天距2021年237天这是ITester软件测试小栈第121次推文点击上方蓝字“ITester软件测试小栈“关注我,每周一、三、五早上07:30准时推...

weixin_42485712的博客 917

获取气体传感器温度调制响应数据并转换为NumPy数组

本任务旨在获取气体传感器在温度调制条件下的响应数据,将其处理为结构化数据格式(NumPy数组),以便用于机器学习模型训练。整个过程包含数据采集、预处理、特征工程和格式转换等关键步骤。

huanghm88的专栏 1207

前端学HTTP之网络基础

显示目录 目录 [1]网络 [2]OSI [3]TCP/IP 前面的话   HTTP协议对于前端工程师是非常重要的。我们在浏览网站时,访问的每一个WEB页面都需要使用HTTP协议实现。如果不了解HTTP协议,就不可能了解网站的本质。在学习HTTP之前,本文先介绍一些网络基础知识 网络   简单地说,网络就是在一定的区域内将两个或两个以上的计算机以一定的方式连接起来,以供...

weixin_30873847的博客 155

STM32硬件SPI驱动ADS1255/1256避坑指南:从Cube MX配置到稳定采样实战

本文详细解析了使用STM32硬件SPI驱动高精度ADC芯片ADS1255/1256的完整流程与关键陷阱。重点阐述了Cube MX中SPI模式(必须为CPOL=1, CPHA=1)、数据帧格式(MSB First)及波特率(建议从256kHz起)的正确配置,并提供了分步读写时序的代码实现与逻辑分析仪调试方法,帮助开发者避开常见坑点,实现稳定可靠的高精度数据采样。

weixin_29193259的博客 359

快速玩转 Llama2!机器学习 PAI 最佳实践(一)—低代码 Lora 微调及部署

本实践将采用阿里云机器学习平台PAI-快速开始模块针对 Llama-2-7b-chat 进行开发。PAI-快速开始支持基于开源模型的低代码训练、布署和推理全流程,适合想要快速开箱体验预训练模型的开发者。

阿里云云栖号 1766

迈向高阶:优秀Android程序员必知必会的网络基础

文将主要介绍计算机网络的一些基础,以及在Android开发中的一些使用及遇到的问题和解决。1)计算机网络体系结构;2)Http相关;3)Tcp相关;4)Socket。

qq_52703909的博客 209

几种在NCBI中查询获取目的基因序列的方法

几种在NCBI中查询获取目的基因序列的方法 在NCBI中,如何查询并下载获得某物种的某特定功能的基因序列,相信对于看到此篇的大部分同学来说都不陌生了。想到对于刚开始接触生信的同学们来说,也许尚不能很熟练地在NCBI中查询想要的基因序列,因此在这里简要作了一个总结,希望对初学生信的同学们有所帮助。 此篇博文源于此前有同学问我,提到他导师给他布置任务,查找相关的文献,看相关文献中都报道了哪些细菌物种能够产生聚羟基脂肪酸酯(polyhydroxyalkanoate ,PHA),参与合成该产物的基因都有哪些,然后在

qq_23435961的博客 1万+

Android网络基础(134题)

转载请注明链接:http://blog.youkuaiyun.com/feather_wch/article/details/79643743 Android中的Http和网络框架(Volley/OkHttp/Retrofit) 版本:2018/3/30-1(15:09) Android中的Http和网络框架(Volley/OkHttp/Retrofit) Volley OkHttp Retro...

feather(猎羽) 858

OpenClaw进阶实战(二十一):工作流6:跨平台舆情监控与自动响应

摘要: 本文介绍基于OpenClaw构建自动化舆情监控系统,实现多平台数据采集、AI情感分析与智能预警。系统架构包含数据采集(微博/小红书/抖音)、消息队列、情感分析(SnowNLP/大模型API)、分级预警和自动响应模块。通过技能化开发(如微博API采集、小红书模拟登录)实现7×24小时监控,结合情感强度与传播速度分级处理负面舆情,形成"采集-分析-预警-处置"闭环,适用于企业私有化部署。

PeterPan的博客 299

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

用mc协议的话 要在程序里写报文吗_浅谈TCP IP协议栈(一)入门知识

说来惭愧,打算写关于网络方面的知识很久了,结果到今天才正式动笔,好了,废话不多说,写一些自己能看懂的入门知识,对自己来说是一种知识的总结,也希望能帮到一些想了解网络知识的童鞋。万事开头难,然后中间难,最后结尾难。。。哈哈,不扯这种心灵砒霜了,讲讲我这个小菜鸟是如何从对网络一窍不通到现在可以完整的说出一个报文是如何转发的初级水平,先看一下TCP/IP的介绍:Transmission Control ...

weixin_39643244的博客 271

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Http协议与TCP协议简单理解

在C#编写代码,很多时候会遇到Http协议或者TCP协议,这里做一个简单的理解。 TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性。Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求。Http会通过TCP建立起一个到服务器的连接通道,当本次请求需要的数据完毕后,Http会立即将TCP连接断开,这个过程是

写代码的蜗牛 9万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

网络基础知识详解(图解版)

网络基础知识详解(图解版) 1.网络协议: 我们用手机连接上网的时候,会用到许多网络协议。从手机连接 WiFi 开始,使用的是 802.11 (即 WLAN )协议; 手机自动获取网络配置,使用的是 DHCP 协议。 这时手机已经连入局域网了,可以访问局域网内的主机和资源,但还不能使用互联网应用,例如:微信、抖音等。想要访问互联网,还需要在手机的上联网络设备上进行配置,即在无线路由器上配置 NAT、 PPPOE 等功能,才能把局域网接入到互联网中,手机就可以上网玩微信、刷抖音了。 局域网 :小范围内的

哒宰的博客 1万+

HTTP协议与TCP协议的深刻理解

TCP协议对应于传输层,而Http协议对应于应用层,从本质上讲,二者没有可比性,Http协议是建立在TCP协议之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求。Http会通过tcp建立起一个到服务器的连接通道,当本次请求需要的数据完毕后,Http会立即将TCP连接断开,这个过程是很短的。所以Http连接是一种短连接,是一种无状态的连接。 所谓的无...

勇敢牛牛 9514

http协议和Tcp协议的区别,http协议详解

TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性。 1,http对应于应用层 2,Tcp协议对应于传输层 3,http协议是在Tcp协议之上建立的,http在发起请求时通过tcp协议建立起连接服务器的通道,请求结束后,立即断开tcp连接 说明:从HTTP/1.1起,默认都开启了Keep-Alive,保持连接特性,简单地说,当一个网页打开完成后,客户端和服务器...

前端361 2万+
下一篇: 【Redis】『1』为什么Redis内存不宜过大
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值