HTTP、TCP、UDP 区别原理

本文深入解析HTTP、TCP、UDP协议的区别及工作原理,包括TCP的三次握手与四次挥手过程,探讨HTTP作为应用层协议如何基于TCP运行,以及socket在网络通信中的作用。


前言

提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


一、网络协议层OSI七层与TCP/IP四层

在这里插入图片描述
图源至:https://www.php.cn/faq/466487.html

1、OSI七层

7 应用层 例如HTTP、SMTP、SNMP、FTP、Telnet、SIP、SSH、NFS、RTSP、XMPP、Whois、ENRP
6 表示层 例如XDR、ASN.1、SMB、AFP、NCP
5 会话层 例如ASAP、TLS、SSH、ISO 8327 / CCITT X.225、RPC、NetBIOS、ASP、Winsock、BSD sockets
4 传输层 例如TCP、UDP、RTP、SCTP、SPX、ATP、IL
3 网络层 例如IP、ICMP、IGMP、IPX、BGP、OSPF、RIP、IGRP、EIGRP、ARP、RARP、 X.25
2 数据链路层 例如以太网、令牌环、HDLC、帧中继、ISDN、ATM、IEEE 802.11、FDDI、PPP
1 物理层 例如线路、无线电、光纤、信鸽

详细可参考https://www.cnblogs.com/sunsky303/p/10647255.html

2、TCP/IP四层

TCP/IP简化为:
应用层
传输层
网络层
数据链路层

二、HTTP、TCP、SOCKET区别与原理

socket:socket不是协议是对TCP/IP协议栈的封装与应用(程序员方面上)
http协议:是基于TCP/IP协议的应用层协议
实际上,传输层的TCP是基于网络层的IP协议的,而应用层的HTTP协议又是基于传输层的TCP协议的,而Socket本身不算是协议,就像上面所说,它只是提供了一个针对TCP或者UDP编程的接口。socket是对端口通信开发的工具,它要更底层一些.

1、TCP协议的三次握手和四次挥手

①、三次握手

第一次请求连接:客户端向服务端发送请求SYN=1,seq=x,客户端进入SYN-SENT

第二次请求确认: 服务端收到客户端请求包后,回一个应答ACK=1, SYN=1,
seq=y,ack=x+1,服务端进入SYN-RCVD

第三次连接确认:客户端收到请求确认后,回应ACK=1,seq=x+1,ack=y+1,客户端和服务器进入ESTABLISHED(TCP连接成功)状态

②、四次挥手

第一次请求释放:客户端向服务端发FIN=1,seq=u,进入终止等待状态1

第二次请求确认:服务端收到请求后先回复一个ACK=1,seq=v,ack=u+1,进入关闭等待状态,并向用应用程序发起通知,可能去处理其他信息。客户端收到请求确定后,进入终止等待状态2

第三次请求确认:服务端处理完其他信息后在次向客户端发送FIN=1,ACK=1,
seq=w,ack=u+1,进入最后确认状态。

第四次释放确认:客户端再次收到请求确认后,向服务端发送ACK=1,
seq=u+1,ack=w+1。进入时间等待大概2ms后进入关闭状态。服务端收到释放确认后马上进入关闭状态。

之所以服务端发送2次因为可能服务器再此之前可能要处理其他数据来不及。

③、常见面试问题

【问题1】为什么连接的时候是三次握手,关闭的时候却是四次握手?

答:因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,“你发的FIN报文我收到了”。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。

【问题2】如果已经建立了连接,但是客户端突然出现故障了怎么办?

TCP还设有一个保活计时器,显然,客户端如果出现故障,服务器不能一直等下去,白白浪费资源。服务器每收到一次客户端的请求后都会重新复位这个计时器,时间通常是设置为2小时,若两小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔75秒钟发送一次。若一连发送10个探测报文仍然没反应,服务器就认为客户端出了故障,接着就关闭连接。

【问题3】为什么不能用两次握手进行连接?

答:3次握手完成两个重要的功能,既要双方做好发送数据的准备工作(双方都知道彼此已准备好),也要允许双方就初始序列号进行协商,这个序列号在握手过程中被发送和确认。确保双方的收发都能正常,防止死锁。

转至:https://www.cnblogs.com/renyz/p/11233858.html

2、HTTP协议

http端口80,https端口443
向web服务器进行请求的一种通讯协议。
请求–响应 的机制:即一次请求过程需要请求连接,然后返回响应,关闭连接。
无状态:对前面发送的信息没有记忆性,如有需要要重传。
无连接:一次连接只处理一次请求。

一次请求就需要请求报文,响应就要响应报文。
在这里插入图片描述
图:https://blog.csdn.net/xiaoming100001/article/details/81109617

请求报文格式
http详解和libcurl库使用

基于翔云ocr的人脸识别demo(使用https post请求的libcurl库)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值