TCP协议UDP协议和HTTP协议

news/2024/5/18 15:29:32 标签: tcp/ip, udp, http
http://www.w3.org/2000/svg" style="display: none;">

TCP协议UDP协议和HTTP协议


HTTP 是应用层协议,而 TCP 和UDP是传输层协议


TCP协议和UDP协议

TCP是一种可靠的连接,会保证每一条数据都传输到位,比如,想要每条数据都不落的展现并且暗一点过的顺序,而UDP只管发送数据,不在乎数据是否已经发送到,因此UPD传输速度比较快,通常用于一些比较需要实时性的连接,比如发微信消息,微信语音,

TCP

TCP协议全称是传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议,由 IETF 的RFC 793定义。TCP 是面向连接的可靠的流协议。流就是指不间断的数据结构,你可以把它想象成排水管中的水流。


1.TCP连接的过程

1.发起请求时三次握手
https://img-blog.csdnimg.cn/f5c54dcda26d4655ae99232920f1e344.png" alt="在这里插入图片描述" />

为什么要三次握手而不是两次握手

https://img-blog.csdnimg.cn/85747d49109b4691bfb5f44c0c18b336.png" alt="在这里插入图片描述" />
https://img-blog.csdnimg.cn/08153a320b444fa8a1e536dde6989377.png" alt="在这里插入图片描述" />
https://img-blog.csdnimg.cn/7db33f2f91484ea9b64af5349eae39d6.png" alt="在这里插入图片描述" />
https://img-blog.csdnimg.cn/2e28773abfdf4640927b976546230ae6.png" alt="在这里插入图片描述" />
https://img-blog.csdnimg.cn/642a8b20c21a42bb8bc0fe1c5edf97c2.png" alt="在这里插入图片描述" />
https://img-blog.csdnimg.cn/bf9f6da72b6949f29db5f0b721fdeb63.png" alt="在这里插入图片描述" />


断开连接的四次挥手
https://img-blog.csdnimg.cn/b694008792fc4c6c9f0843af7c6bd608.png" alt="在这里插入图片描述" />

为什么 客服端要经过超市等待时间才能关闭链接

这是为了保证服务端接收到ACK包

如果客服端立即关闭链接这时ACK 包发生了丢失,服务端会一直进入等待确认状态
如果有超时等待时间,当服务端没有收到ACK包时会重新发生FIN包,客服端会响应这个FIN包然后从新发送ACK包并刷新超时等待时间


2.TCP协议的特点

  • 面向连接

面向连接,是指发送数据之前必须在两端建立连接。建立连接的方法是“三次握手”,这样能建立可靠的连接。建立连接,是为数据的可靠传输打下了基础。

  • 仅支持单播传输

每条TCP传输连接只能有两个端点,只能进行点对点的数据传输,不支持多播和广播传输方式。

  • 面向字节流
    TCP不像UDP一样那样一个个报文独立地传输,而是在不保留报文边界的情况下以字节流方式进行传输。

  • 可靠传输

对于可靠传输,判断丢包,误码靠的是TCP的段编号以及确认号。TCP为了保证报文传输的可靠,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。

  • 提供拥塞控制

当网络出现拥塞的时候,TCP能够减小向网络注入数据的速率和数量,缓解拥塞

什么是拥塞控制? 计算机网络是共享的,流量控制避免的是发送方填满接收方的空闲空间,而拥塞控制是避免发送方填满整个网络。

拥塞控制算法有几种?
https://img-blog.csdnimg.cn/b61af446342042ad9e63b91a9532b216.jpeg" alt="在这里插入图片描述" />
https://img-blog.csdnimg.cn/3725f4f12cd947d8ac729c32325141eb.png" alt="在这里插入图片描述" />

  • TCP提供全双工通信

TCP允许通信双方的应用程序在任何时候都能发送数据,因为TCP连接的两端都设有缓存,用来临时存放双向通信的数据。当然,TCP可以立即发送一个数据段,也可以缓存一段时间以便一次发送更多的数据段(最大的数据段大小取决于MSS)


UDP

它直接向目标计算机发送数据包(数据传输的单位),而不先建立连接,也不指示所述数据包的顺序,或检查它们是否按预期到达。(UDP 数据包被称为“数据报”)

  • UDP不提供可靠性

它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。

  • UDP 是无连接的

发送数据之前不需要建立连接(发送数据结束时也没有连接可释放),减少了开销和发送数据之前的时延

  • UDP 没有拥塞控制

网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的

  • UDP 支持一对一、一对多、多对一和多对多的交互通信

TCP与UDP的区别:

1、基于连接与无连接;

2、对系统资源的要求(TCP较多,UDP少);

3、UDP程序结构较简单;

4、流模式与数据报模式 ;

5、TCP保证数据正确性,UDP可能丢包;

6、TCP保证数据顺序,UDP不保证。


HTTP

HTTP是客户端浏览器或其他程序与Web服务器(后端)之间的应用层通信协议。在Internet上的Web服务器上存放的都是超文本信息,客户机需要通过HTTP协议传输所要访问的超文本信息。HTTP包含命令和传输信息,不仅可用于Web访问,也可以用于其他因特网/内联网应用系统之间的通信,从而实现各类应用资源超媒体访问的集成。

Http协议由Http请求和Http响应组成,当在浏览器中输入网址访问某个网站时, 你的浏览器会将你的请求封装成一个Http请求发送给服务器站点,服务器接收到请 求后会组织响应数据封装成一个Http响应返回给浏览器。即没有请求就没有响应。

http请求包括:请求行、请求头、请求体

http响应包括:响应行、响应头、响应体


http://www.niftyadmin.cn/n/1371415.html

相关文章

网络常见的小知识点

HTTP 常用的请求方式,区别和用途? GET: 发送请求,获取服务器数据 POST:向 URL 指定的资源提交数据 PUT:向服务器提交数据,以修改数据 HEAD: 请求页面的首部,获取资源的元信息 DELETE&#…

浏览器输入网址后发生了什么?

1.DNS解析域名,把域名解析为对应服务器的ip地址。 DNS查找过程为(查找ip地址): 1.浏览器缓存 -----》 2.系统缓存 ------》 3.路由缓存------》 4.ISP DNS缓存-------》5.递归查询 递归查询: 根域名服务器—》顶部域名服务器—》…

JS_Gallary

<script> //SCRIPTStart var gnPicNum 4; var gnBtnNum 6; var imgPause new Array(); var imgPlay new Array(); var imgStop new Array(); var imgPrev new Array(); var imgNext new Array(); var imgFull new Array();//涓嶈兘鍦ㄨ繖閲岀敤鍙橀噺鎸囧畾array…

数组去重,数组去除空格

数组去重 function quchong(arr) {let myarr []myarr.push(arr[0])for (let arritem of arr) {if (myarr.indexOf(arritem) -1) {myarr.push(arritem)}}return myarr}数组去除空格 let newArrarr.filter(i>i && i.trim())

我的老婆几个月没用,突然反应迟钝了......

几个月未曾用&#xff0c;开机后发现新买的120GB 8MB Cache的WD 硬盘坏了。坏了拉倒&#xff0c;没什么要紧资料&#xff0c;只是可惜了好多H-animation 和 漫画什么的。 进入windows&#xff0c;时间甚长。 反应异常迟钝。一个SVCHOST占用了90%的资源。 病毒自然不可能。Kill …

什么是原型链

1.所有的函数的 proto 都指向Function原型对象。 2.xx.prototype.constructor指向它本身 3.实例对象没有 Prototype只有__proto__实例对象的__proto__里面的constructor指向的就是他的构造函数 4.什么是原型&#xff1f; 每个函数和类都有一个显式原型prototype&#xff0c…

什么是作用域链

什么是作用域 其实就是某个变量或者函数的可访问范围 作用域也分为&#xff1a; 「全局作用域 」和 「局部作用域」。 全局作用域&#xff1a; 如果一个对象在任何位置都能被访问到&#xff0c; 那么这个对象&#xff0c; 就是一个全局对象&#xff0c; 拥有一个全局作用域。…

testJS

//SCRIPT_START function TestJS() {alert(hello world!); }//SCRIPT_END