http:是用于www浏览的一个协议。
tcp:是机器之间建立连接用的到的一个协议。

1、TCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层。
在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。
在传输层中有TCP协议与UDP协议。
在应用层有FTP、HTTP、TELNET、SMTP、DNS等协议。
因此,HTTP本身就是一个协议,是从Web服务器传输超文本到本地浏览器的传送协议。

2、HTTP协议是建立在请求/响应模型上的。首先由客户建立一条与服务器的TCP链接,并发送一个请求到服务器,请求中包含请求方法、URI、协议版本以及相关的MIME样式的消息。服务器响应一个状态行,包含消息的协议版本、一个成功和失败码以及相关的MIME式样的消息。
HTTP/1.0为每一次HTTP的请求/响应建立一条新的TCP链接,因此一个包含HTML内容和图片的页面将需要建立多次的短期的TCP链接。一次TCP链接的建立将需要3次握手。
另外,为了获得适当的传输速度,则需要TCP花费额外的回路链接时间(RTT)。每一次链接的建立需要这种经常性的开销,而其并不带有实际有用的数据,只是保证链接的可靠性,因此HTTP/1.1提出了可持续链接的实现方法。HTTP/1.1将只建立一次TCP的链接而重复地使用它传输一系列的请求/响应 消息,因此减少了链接建立的次数和经常性的链接开销。

3、结论:虽然HTTP本身是一个协议,但其最终还是基于TCP的。不过,目前,有人正在研究基于TCP+UDP混合的HTTP协议。

具体介绍

IP (网际协议)

在网络通信中,网络组件的寻址对信息的路由选择和传输来说是相当关键的。相同网络中的两台机器间的消息传输有各自的技术协定。LAN 是通过提供6字节的唯一标识符(“MAC”地址)在机器间发送消息的。SNA 网络中的每台机器都有一个逻辑单元及与其相应的网络地址。DECNET、AppleTalk 和 Novell IPX 均有一个用来分配编号到各个本地网和工作站的配置。

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

TCP (传输控制协议)

通过序列化应答和必要时重发数据包,TCP 为应用程序提供了可靠的传输流和虚拟连接服务。TCP 主要提供数据流转送,可靠传输,有效流控制,全双工操作和多路传输技术。可查阅 TCP 部分获取更多详细资料。

至于HTTP协议,它是TCP协议族中的一种。使用TCP80端口

HTTP是应用层协议,TCP是传输层协议!

数据包在网络传输过程中,HTTP被封装在TCP包内!!

1. TCP/UDP

面向连接的TCP

“面向连接”就是在正式通信前必须要与对方建立起连接。比如你给别人打电话,必须等线路接通了、对方拿起话筒才能相互通话。

TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,我们这里只做简单、形象的介绍,你只要做到能够理解这个过程即可。

我们来看看这三次对话的简单过程:

1. 主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;

2. 主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:“可以,你什么时候发?”,这是第二次对话;

3. 主机A再发出一个数据包确认主机B的要求同步:“我现在就发,你接着吧!”,这是第三次对话。

三次“对话”的目的是使数据包的发送和接收同步,经过三次“对话”之后,主机A才向主机B正式发送数据。

TCP协议能为应用程序提供可靠的通信连接,使一台计算机发出的字节流无差错地发往网络上的其他计算机,对可靠性要求高的数据通信系统往往使用TCP协议传输数据。

我们来做一个实验,用计算机A(安装Windows 2000 Server操作系统)从“网上邻居”上的一台计算机B拷贝大小为8,644,608字节的文件,通过状态栏右下角网卡的发送和接收指标就会发现:虽然是 数据流是由计算机B流向计算机A,但是计算机A仍发送了3,456个数据包,如图2所示。这些数据包是怎样产生的呢?因为文件传输时使用了TCP/IP协 议,更确切地说是使用了面向连接的TCP协议,计算机A接收数据包的时候,要向计算机B回发数据包,所以也产生了一些通信量。

如果事先用网络监视器监视网络流量,就会发现由此产生的数据流量是9,478,819字节,比文件大小多出10.96%(如图3所示),原因不仅在于数据包和帧本身占用了一些空间,而且也在于TCP协议面向连接的特性导致了一些额外的通信量的产生。

面向非连接的UDP协议

“面向非连接”就是在正式通信前不必与对方先建立连接,不管对方状态就直接发送。这与现在风行的手机短信非常相似:你在发短信的时候,只需要输入对方手机号就OK了。

UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!

UDP 适用于一次只传送少量数据、对可靠性要求不高的应用环境。比如,我们经常使用“ping”命令来测试两台主机之间TCP/IP通信是否正常,其实 “ping”命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息及时反馈回来,那么网络就是通的。例如, 在默认状态下,一次“ping”操作发送4个数据包。大家可以看到,发送的数据包数量是4包,收到的也是4包(因为对方主机收到后会发回一 个确认收到的数据包)。这充分说明了UDP协议是面向非连接的协议,没有建立连接的过程。正因为UDP协议没有连接的过程,所以它的通信效果高;但也正因为如此,它的可靠性不如TCP协议高。QQ就使用UDP发消息,因此有时会出现收不到消息的情况。

                              附表:tcp协议和udp协议的差别

  TCP UDP
是否连接 面向连接 面向非连接
传输可靠性 可靠 不可靠
应用场合 传输大量的数据,对可靠性要求较高的场合 传送少量数据、对可靠性要求不高的场景
速度

TCP协议和UDP协议各有所长、各有所短,适用于不同要求的通信环境。

TCP、UDP和HTTP详解相关推荐

  1. uip tcp udp运行流程详解

    uip_process运行流程 uip_process(u8_t flag) (1)if(flag == UIP_UDP_SEND_CONN),若是则goto udp_send;不是则向下执行: (2 ...

  2. [windows网络编程]tcp/udp编程初步详解-转

    #pragma comment (lib,"ws2_32.lib") #include <Winsock2.h> #include <stdio.h> 如你 ...

  3. tcp网络通信教程 java_基于java TCP网络通信的实例详解

    JAVA中设计网络编程模式的主要有TCP和UDP两种,TCP是属于即时通信,UDP是通过数据包来进行通信,UDP当中就会牵扯到数据的解析和传送.在安全性能方面,TCP要略胜一筹,通信过程中不容易出现数 ...

  4. TCP/IP五层模型详解

    TCP/IP五层模型详解 应用层 HTTP:简单的明文传输的请求--响应协议 HTTP数据结构: 首行 头部 空行 正文 浏览器的控制 HTTPS 定义 CA认证 SSL加密流程: 混合对称加密过程: ...

  5. 前端基础-TCP/IP 不完全详解

    TCP/IP 不完全详解 TCP/IP是通信协议的统称.首先,我们先认识一下OSI参考模型 OSI 参考模型 OSI 参考模型中各个分层的作用如下: 概括的说: 应用层:为应用程序提供服务并规定应用程 ...

  6. 传输层协议TCP和UDP的区别详解

    一.TCP协议 1.TCP的优点: 可靠,稳定 TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认.窗口.重传.拥塞控制机制,在数据传完后,还会断开连接用来节约系 ...

  7. TCP 可靠传输机制详解

    目录 TCP协议的特点 TCP 报文段 TCP "三次握手" TCP "四次挥手" 客户端和服务器端所经历的状态 TCP 可靠传输 TCP流量控制 TCP拥塞控 ...

  8. TCP固定头部结构详解

    1.前言 尽管TCP和UDP都使用相同的网络层(IP),TCP却向应用层提供与UDP完全不同的服务.TCP提供一种面向连接的.可靠的字节流服务. 使用TCP协议通信的双方必须先建立连接,然后才能开始数 ...

  9. TCP建连过程详解/160805

    jehol.liuyang 本文仅涉及对基本的建连过程的讨论,同时打开.建连失败处理等异常流程均不涉及,后期有时间会逐步完善: 另外,因时间仓促,加之能力有限,文章错误之处在所难免,敬请批评指正 TC ...

最新文章

  1. vue-router学习笔记
  2. IDEA工具基本设置
  3. 【硬核书】树与网络上的概率
  4. 微课堂 | 典典养车COO:暴力运营美学,典典养车如何一年内拿到500万用户(今晚8点开始)...
  5. 插入节点insertBefore()
  6. Spring Data JPA 从入门到精通~@Modifying修改查询
  7. php源码自动识别文本中的链接,自动加载识别文件Auto.php
  8. Distribution is all you need:这里有12种做ML不可不知的分布
  9. 重读领域驱动设计——如何说好一门通用语言
  10. epoll内核源码详解+自己总结的流程
  11. webpack手动搭建vue环境时,main.js引入一直报Uncaught SyntaxError: Unexpected identifier
  12. DOS-强制结束进程命令(ntsd命令/taskkill命令)使用教程
  13. 代码坏的味道21:被拒绝的遗赠 (Refused Bequest)
  14. java项目大鱼吃小鱼
  15. manjaro-安装idea
  16. 基于AS的学生教务系统
  17. android iphone 同步通讯录,Apple ID 能同步 iPhone 和安卓手机通讯录吗?| 有轻功 #213...
  18. SNA(社会网络分析)——三种中心度总结
  19. linux vbox安装mac os,使用virtualbox虚拟机安装macos和linux系统
  20. 雷军为啥那么煽情:回到初心,芝麻开门

热门文章

  1. centos7 python3 sqlserver_Centos7.3下SQLServer安装配置方法图文教程
  2. 我的泰坦尼克数据分析
  3. 互斥信号量的删除与状态查询
  4. 网页爬虫python代码_Python 爬虫web网页版程序代码
  5. php中文网数据库的搭建,【后端开发】php数据库中文乱码
  6. 矩阵分解法做推荐系统
  7. matlab编程风格
  8. python包介绍:GeoPandas(初识)
  9. R语言应用实战系列(二)-基于R语言的方差分析
  10. 深度学习核心技术精讲100篇(三十五)-美团餐饮娱乐知识图谱——美团大脑揭秘