问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

TCP/IP、Http、Socket的区别?

发布网友 发布时间:2024-09-29 13:56

我来回答

0个回答

热心网友 时间:2024-11-16 10:37

首先介绍一下七层网络模型!

网络自下而上分为七层模型,即OSI(Open System Interconnection)模型,包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。这些层涉及到所有通信过程,以下图片展示了各层对应的协议和硬件。

应用层主要包括HTTP、SMTP、DNS、SNMP、FTP、Telnet、SIP、SSH、NFS、RTSP、XMPP、Whois、ENRP等协议,规定数据的传输协议。

TCP协议(传输控制协议)负责对数据传输进行控制,数据报文格式如图所示,关于TCP头部信息详细数据可以参考链接:(传输层)TCP协议。面试中,计算机网络的TCP三次握手和四次挥手是常见问题,面试官更希望听到怎样的回答?详细程度如何?

TCP(传输控制协议)面向连接,传输可靠、有序,传输大量数据。速度慢,对系统资源要求多,程序结构复杂。每条TCP连接只能是点到点,首部开销20字节。

UDP(用户数据包协议)面向非连接,传输不可靠,无序,传输少量数据。速度快,对系统资源要求少,程序结构简单,UDP支持一对一、一对多、多对一、多对多的通信方式,首部开销8字节。

TCP协议:数据在网络中的传输;对应于传输层;IP协议:对应网络层;数据在网络中的传输;TCP/IP:解决数据如何在网络中传输;HTTP:如何包装数据;Socket是对TCP/IP协议的封装,本身不是协议,而是调用接口(API),通过Socket,我们才能使用TCP/IP协议。

Http连接:http连接就是所谓的短连接,客户端向服务器发送一次请求,服务器端响应后连接即会断掉。

应用程序要网络通信,就得利用套接字,设置对端的IP地址+端口号(IP和端口就是Socket的基本规则),实现数据的发送与接收。网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个Socket。例如,主机A要连主机B,主机A就要设置主机B的IP+端口。

什么是TCP连接的三次握手?TCP提供了连接的一端结束发送后,还能接收来自另一端数据的能力,也就是所谓的半关闭。

TCP是全双工的,客户端在给服务器端发送信息的同时,服务器端也可以给客户端发送信息。半双工的意思是A可以给B发,B也可以给A发,但是A在给B发的时候,B不能给A发,即不同时,为半双工。单工为只能A给B发,B不能给A发;或者是只能B给A发,不能A给B发。

第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

我们假设A和B是通信的双方。我理解的握手实际上就是通信,发一次信息就是进行一次握手。

在三次握手之后,A和B都能确定这么一件事:我说的话,你能听到;你说的,我也能听到。这样,就可以开始正常通信了。

PS:这里补充一下TCP三次握手和四次挥手的详解。

三者从本质上来说没有可比性!TCP是网络传输协议,HTTP是超文本传输协议;HTTP是应用层协议,定义的是传输数据的内容以及格式的规范,主要解决如何包装数据。

TCP是底层通讯协议,定义的是数据传输和连接方式的规范,也可以说,TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,TCP对应与传输层,而HTTP对应于应用层,所以HTTP协议是建立在TCP协议之上的~Socket可以支持不同的传输层协议(TCP或UDP),socket则是对TCP/IP协议的封装和应用(程序员层面上)。当使用TCP协议进行连接时,该Socket连接就是一个TCP连接,Socket是发动机,提供了网络通信的能力。

HTTP底层是利用TCP/UDP协议传输的,所以支持HTTP也就一定支持TCP/UDP;HTTP是无状态的短连接,而TCP是有状态的长连接。

PS:TCP/IP、HTTP、Socket的面试题TCP握手为什么刚好是三次?TCP建立连接时,通过三次握手能防止历史连接的建立,能减少双方不必要的资源开销,能帮助双方同步初始化序列号。序列号能够保证数据包不重复、不丢弃和按序传输。

不使用「两次握手」和「四次握手」的原因:

两次握手:无法防止历史连接的建立,会造成双方资源的浪费,也无法可靠地同步双方序列号;

四次握手:三次握手就已经理论上最少可靠连接建立,所以不需要使用更多的通信次数。

了解WebSocket吗?长轮询和短轮询,WebSocket是长轮询。

具体比如在一个电商场景,商品的库存可能会变化,所以需要及时反映给用户,所以客户端会不停地发请求,然后服务器端会不停地去查变化,不管变不变,都返回,这个是短轮询。

而长轮询则表现为如果没有变,就不返回,而是等待变或者超时(一般是十几秒)才返回,如果没有返回,客户端也不需要一直发请求,所以减少了双方的压力。

参考链接HTTP协议包括哪些请求什么是TCP的保活机制?定义一个时间段,在这个时间段内,如果没有任何连接相关的活动,TCP保活机制会开始作用,每隔一个时间间隔,发送一个探测报文,该探测报文包含的数据非常少,如果连续几个探测报文都没有得到响应,则认为当前的TCP连接已经死亡,系统内核将错误信息通知给上层应用程序。

PS:1个很有意思的问题~

首先,我们要知道TCP是全双工的,即客户端在给服务器端发送信息的同时,服务器端也可以给客户端发送信息。而半双工的意思是A可以给B发,B也可以给A发,但是A在给B发的时候,B不能给A发,即不同时,为半双工。单工为只能A给B发,B不能给A发;或者是只能B给A发,不能A给B发。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
史上最全ETF全解 证券ETF是深市的吗 怎样把莲藕肉丸子做的好吃? 高三语文小说赏析小说形象分析与答题技巧 人物形象题答题技巧 借助什么分析小说的人物形象 脖子旁边疼是什么原因 在群里不是好友怎么把群里人建另一个群 蛇床子的药理作用 炒蛇床子和生蛇床子有什么区别 带你一张图了解八种流行的网络协议 ...HTTPS、TCP、UDP、Websocket(论点:概念、通信流程、异同点、应用领域... 谁晓得银杏树木材有哪些用途 2010年出产长安轻型普通货车是国几? vr买哪个牌子好 古诗相思表达了什么感情 实验室里的危险品如何存放? 怎么学好电子商务专业? 金毛犬交配十二天有流血血色发黑怎么了 狗交配后 流血是不是流掉了? 你好 我有一只金毛母犬 交配半个月了 怎么突然流血了 怎么回事啊 我女儿是1月9号早上0618分出生的,爸爸姓范,妈妈姓梁,请帮忙起名字... 日渐长大的我总给你惹祸是什么歌曲? 性能炸裂!10.1寸超窄边框+AMD 6800u,GPD WIN Max 2掌机测评 ...突然咳嗽,可能是被水呛到了,可突然有栽倒在地下,可当事人事后一点... r76800u核显相当于什么显卡 哈弗h6保养灯如何复位? 生气会手臂手指发麻是什么原因 为什么我生气的时候会出现呼吸困难全身发麻 一生气手发麻怎么回事 Netty网络编程框架的核心概念以及入门案例 从晋江南上高速到贵州凤冈县下高速需要多少公里 晋江到成都汽车怎么走 纳雍到福建晋江车票,要经过湖南邵东吗 通隆都有什么产品? 福建通隆食品在福州算什么水平的? 通隆品牌实力怎么样? 通隆鱼丸味道怎么样?没吃过 同是3000瓦的潜水泵单相和三相上水量一样吗? 名侦探柯南有黑暗组织出现的集数关于会员的集数方便的话说下大概... 为什么我的磁盘管理中80%--90%空闲,而内存使用率却一直在70%以上,请 ... 为什么我的比特精灵下载只有80-90左右...我是2M的ADSL?出什么问题了... ...它总显示80-90%,我想结束它,可又不能,它是什么? 我的iphone一天不关机,使用率就达到80%到90%,而且用起来变卡,我的是i... 玩游戏的时候卡,内存占到80%-90%玩的是DNF跟天龙八部2 !徐步需要+内存... CPU使用率一直在90%-100% 突然就这样了谁知道什么问题 那会还没事... ravmond.exe为什么占80-90%的内存?有时候忽然又好了? 安卓系统为什么cpu总是运行到80-90%?怎么能关掉一些不必要的进程? 重庆市大足区高中有哪些? 拼多多的万人团是怎么回事呢?