黑马程序员技术交流社区
标题: 【广州Python】UDP和TCP以及HTTP [打印本页]
作者: yangrui 时间: 2018-12-6 10:22
标题: 【广州Python】UDP和TCP以及HTTP
首先看一下TCP/IP四层模型
应用层: 负责处理特定的应用程序细节,有FTP、HTTP、TELNET、SMTP、DNS等协议
运输层: 主要为两台主机上的应用提供端到端的通信, 有TCP协议与UDP协议
网络层: 处理分组在网络中的活动,比如分组的选路, 有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议
链路层(数据链路层/网络接口层): 包括操作系统中的设备驱动程序、计算机中对应的网络接口卡
HTTP
HTTP(超文本传输协议)是利用TCP在两台电脑(通常是Web服务器和客户端)之间传输信息的协议。客户端使用Web浏览器发起HTTP请求给Web服务器,Web服务器发送被请求的信息给客户端。虽然HTTP本身是一个协议,但其最终还是基于TCP的, 不过,目前,有人正在研究基于TCP+UDP混合的HTTP协议。
HTTP协议是建立在请求/响应模型上的。首先由客户建立一条与服务器的TCP链接,并发送一个请求到服务器,请求中包含请求方法、URL、协议版本以及相关的MIME样式的消息。服务器响应一个状态行,包含消息的协议版本、一个成功和失败码以及相关的MIME式样的消息。
HTTP/1.0为每一次HTTP的请求/响应建立一条新的TCP链接,因此一个包含HTML内容和图片的页面将需要建立多次的短期的TCP链接。一次TCP链接的建立将需要3次握手。
另外,为了获得适当的传输速度,则需要TCP花费额外的回路链接时间(RTT)。每一次链接的建立需要这种经常性的开销,而其并不带有实际有用的数据,只是保证链接的可靠性,因此HTTP/1.1提出了可持续链接的实现方法。HTTP/1.1将只建立一次TCP的链接而重复地使用它传输一系列的请求/响应消息,因此减少了链接建立的次数和经常性的链接开销。
TCP和UDP
TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议, 当对网络通讯质量有要求的时候。比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,比如HTTP、HTTPS、FTP等传输文件的协议,POP、SMTP等邮件传输的协议。
UDP是User Datagram Protocol的简称,用户数据报协议, 一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。 当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快,这时就可以使用UDP。在日常生活中,常见使用UDP协议的应用比如:QQ语音、QQ视频、TFTP等。
TCP和UDP是FTP,HTTP和SMTP之类使用的传输层协议。虽然TCP和UDP都是用来传输其他协议的,它们却有一个显著的不同:TCP提供有保证的数据传输,而UDP不提供。这意味着TCP有一个特殊的机制来确保数据安全的不出错的从一个端点传到另一个端点,而UDP不提供任何这样的保证。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |