开发者学堂课程【2020版大数据实战项目之DMP广告系统(第六阶段):商库圈_Htttp_TCP】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/681/detail/11822
商库圈_Htttp_TCP
一、Http客户端
1.目标
即使是在大数据系统中,看起来和 Http 关系不太大,但其实 Http 是无处不在的。例如,网页访问这个服务器就是使用 Http 的请求,服务之间进行交互时也会使用Http。使用spark启动的时候会去使用一个 http 的工具启动服务器,让其他下载相应的架包,因此 Http 协议也是非常重要的一个协议。包括在数据处理是访问一些其他的服务也要使用http客户端,所以http是一个非常重要的东西
通过本章,详细的介绍 Http 协议,并且介绍常见的 Http 常见的访问方式
2.步骤
·Http:协议了解 Http 服务,知道它的作用
·常见的 Http 客户端
3.Http 协议
(1)TCP
是 Http 协议的底层协议,Http 协议只是一种字符串组织的方式。比如,字符串中间用什么分隔,里面可以有什么字段,这是 Http 规定的。但是中间怎么传输这些跟它没有关系,是 TCP 的内容。在几十年以前是没有互联网协议的,两台机器也不能通信,要想通信必须插一个网线,那个年代其实没有 TCP 这个东西,应该不到一百年,那么那个时候两台机器如何进行通信。
比如拿微信来说,张三的手机有一个微信,李四的手机也有一个微信。那么这两个微信要进行通信,首先张三和李四的手机要进行通信。手机也可理解为网络中与PC等价的一个终端
(2)问题的提出,这两个微信如何通信
①解决方案一:使用网线或者 WIFI,通过 wifi和 其中的一些节点,连接到另外一台手机。或者二者之间直接插网线
首要考虑的问题就是 zhangsan 如何知道 lisi 在网络中的位置。例如,如果你想要去亲戚家串门,首先要一个亲戚家在哪里
②解决方案二:使用 IP 标注主机在网络中的位置,通过IP地址我们就可以寻址找到另一个电脑或手机,另一个终端
此时可见,张三的手机和李四的手机中各有一个微信和一个QQ。那么微信与微信之间想进行通信的话,首先这两个手机要进行通信,那么这两个手机分别要有一个地址。因此张三的手机地址通过李四的手机地址来访问李四这台手机
l 解决的问题:现在 zhangsan 的手机和 lisi 的手机在网络中已经有位置了,这两个手机之间已经可以通信了
l 遗留的问题:但是 zhangsan 的手机和 lisi 的手机中运行了很多程序, zhangsan 手机中的微信该如何找到 lisi 手机中的微信
③解决方案三:使用 Port 标注程序在电脑或手机中的位置
现在要让微信和微信之间、QQ 和 QQ 之间进行联系,此时在张三的手机里已经能找到李四的手机,通过IP地址。但是这个程序怎么精确的找到另一个手机当中的程序,又会引入一个概念叫做端口。我们知道IP地址就是一个主机或者一个终端在网络当中的位置。那么端口就是一个程序在一个中端的位置。
比如张三的手机中有100个程序可以联网,那么这100个程序都有一个自己的端口。所以IP表示一个中端在网络中的位置,端口表示一个程序在终端之中的位置。如果我们知道了李四手机中的微信,那么两个微信之间就可以进行相应的通信
l 解决的问题:现在 zhangsan 手机上的微信,已经可以和 lisi 手机上的 微信交互了,通过端口可以解决网络中的主机中的软件识别问题
l 遗留的问题:网络通信中有很多问题,需要通信双方进行协调,比如说协议版本,容错方式,数据包长度,路由信息等,如果没有一个好的协议,双方可以进行通信吗?
④解决方案四:使用 TCP 协议,规范通信双方都需要遵循的报文格式
现在通过 IP 能找到另外一个手机,通过端口能找到另外一个程序。那么发送的数据应该是什么样呢?
例如我是一个只会说中国话的中国人,你是一个只会说英语的英国人,那么我们两个该怎么进行沟通呢?因此我们就需要找一个世界语,我们的语言就一样了,这时我们两个就能交互了。
张三和李四要进行通信,如果张三和李四互相发送的报文格式不一样,那么一定不知道对方在哪儿。所以我们要统一报文的格式,这个格式一定要双方都认同。大家都使用这种格式就可以进行交接和沟通了,这种格式叫做协议。
当然协议并不只是报文格式,他还指的是通信的过程,它是一整套的。比如TCP就是其中一个协议。还有一个协议叫做 UDP,他们之间的关系是TCP是有连接的安全的协议,UDP 是一个面向无连接的也不需要握手。TCP 会跟踪,并且需要回执。二者都是通信协议。
这时完整协议是TCP/IP是用IP来标注位置,用端口来标注程序,然后用TCP来规定怎么进行通信,那么两个机器就可以建立连接,并且进行通信。
微信和 QQ 是不能进行通信的。例如,TCP 只是让我们两个人同时说人话,但是人话又分为很多种。所以我们没法在TCP这一层规定我说什么你说什么,假如说理解为微信说的中文,QQ说的英文,那么他们不能进行通信,在 TCP 之上他们应该还有一层协议给应用之间使用,TCP只是规定在传输时的协议
l 解决的问题:现在双方终于有了完备的,可以相互通信的环境了, TCP 规定了通信双方报文的格式,包括各种标志位,源 IP 和目标,通信版本等
l 遗留的问题: TCP 适合所有场景吗?
跟着这个路径来解决的问题就是双方如何通信的问题,解决方案叫做 TCP / IP ,同样的,也有另外一个基础协议,是不安全的无连接的,叫做 UDP /IP