HTTP 协议入门
浏览器本课程中,所有提到的“浏览器”的概念,是泛指可以发出HTTP请求的程序,无论是具体的浏览器,还是手机上使用HTTP协议与服务端通讯的App,又或者是命令行中的telnet,curl等命令,都在我们本次课中提到的“浏览器”概念的范畴。关于 HTTP 的学习资源什么是 HTTP 协议 ?浏览器 与 Web服务器之间的通信协议、交互协议,即 HTTP协议。Web服务器是什么?有什么用?Web服务器用于提供Web资源,比如图片、网页等。什么是 HTTP 事务?一次HTTP事务 = 一次HTTP请求 + 一次HTTP响应。因此,HTTP协议,也可以被称为请求响应式协议。任何两次HTTP事务之间是没有任何关系的,即一次HTTP事务不会依赖另一个HTTP事务。两次请求之间互不干扰,即HTTP无状态性。什么是协议分层?协议分层,不同层完成不同的功能。应用层、传输层(TCP)、网络层(IP)、数据链路层和物理层。DNS 是什么?域名 = IP地址 + 端口号。DNS解析,可以完成从域名到IP地址的解析。一次HTTP事务(请求 / 响应)的过程是怎样的?HTTP 请求报文HTTP 响应报文使用浏览器 F12 - Network 可以查看 HTTP 请求报文和响应报文。

华为资深工程师总结的这本435页的书,居然把网络协议给趣谈了
苦且绕不过去。经过多次放弃之后,我发现在我的职业生涯中,网络这一关无论如何也绕不过去。本来觉得写Java程序时可以依赖别人的库,所以就不用关心这么多底层的技术了,但是到后来才发现,服务数量一多,吞吐量一大,我们关心的不再仅仅是某个Java应用,而是要提升整个集群的性能,这时网络问题就会出现。而且大规模的微服务架构必定要上云、使用VPC网络,这时就必定要考虑双活和灾备,必定要做各个层次的负载均衡,这些都需要网络方面的技术。既然绕不过去,那就必须“啃”下它,于是我就进入了暗无天日的网络协议学习的过程。 见山开路、遇水搭桥,遇到一个知识点攻克一个,再将其写到博客或者笔记里面。有时候要看很多文章和书才能攻克一个知识点,但我还是每天下班抱着网络技术相关的文章和书看,直到将各个零散的知识点串连了起来。后来在定位网络问题的时候,我开始有了自己的思路,这时才感觉算是暂时趟过了这条河。网络协议知识点太多,学完记不住。大部分读者应该都学过计算机网络课程,学的时候感觉并不难,尤其这门课没有公式,更像是文科的东西。学了一大堆东西,也背了一大堆东西,但是最终应付完考试之后,都“还给了老师”每次都感觉自己好像学会了,但实际应用的时候依旧无从下手。虽然很多细节都摸索得差不多了,但是当自己去应用和调试时,才发现还是没有任何思路。比如,当创建出来的虚拟机不能上网时,还是无从下手,学过的很多东西,似乎都用不上。我把这种现象总结为:一看觉得懂,一问就打鼓,一用就糊涂。所以本书使用了“趣谈”这种方式,它可以解决从“入门到放弃”的问题,把晦涩的知识点和一些有趣的故事通过比喻的方式结合起来,这样更容易帮助读者系统、深入地了解网络技术的知识点和大致的工作流程。主要包括的内容和总结三部分给大家进行网络协议的拓展学习,希望大家能够喜欢!!第1 章 通信协议概述1.1 为什么要学习网络协议相信大家都信过通天塔的故事,上帝为了阻止人类联合起来,让人类说不同的语言,人类没法沟通,达不成“协议", 通天塔的计划就失败了。但是千年以后,有一种叫“程序猿”的物种,“敲”着一种这个群体通用的语言,打造着互联网世界的“通天塔”。如今的世界,正是因为互联网,才连接在一起。如果你是程序员,一定看得懂上面这一段文字。这是每一个程序员向计算机世界说“你好,世界”的方式。但是,你不一定知道,这段文字也是一种协议,是人类和计算机沟通的协议,只有通过这种协议,计算机才知道我们想让它做什么。第 2 章 从二层到三层2.1 从物理层到MAC 层:如何在宿舍里自己组网玩联机游戏第一层:物理层路由器的使用发生在第三层上。我们先从第一层物理层开始说。物理层能折腾什么?现在的同学可能想不到,我们当时去学校配电脑的地方买网线,卖网线的师傅都会问,你的网线是要电脑连电脑啊,还是电脑连网口啊?我们要的是电脑连电脑的网线。就是将一根网线的一头插在一台电脑的网卡上,另一头插在另一台电脑的网卡上。但是在当时,用普通的网线这样连接是通不了的,所以水晶头要做交叉线,用的就是所谓的1-3,2-6交叉接法。水晶头的第l、2脚和第3'6脚,分别起着WL发信号的作用。将一端的1号线和3号线、2号线和6号线互换一下位置,就能够在物理层实现两端通信。当然电脑连电脑,除了网线要交叉,还需要配置这两台电脑的IP地址、子网掩码和默认网关。这3个概念前文已经详细描述过了。要想两台电脑能够通信,两台电脑的这3项必须属于一个网络,否则是行不通的。第二层:MAC层你可能已经发现问题了。Hub采取的是广播的模式,如果每一台电脑发出的网络包,宿舍里的每台电脑都能收到,那就麻烦了。这时就需要解决以下几个问题:这个网络包是发给谁的?谁应该接受?大家都在发,会不会产生混乱?有没有谁先发、谁后发的规则?如果发送的时候出现了错误,怎么办这几个问题,都发生在第二层链路层,即MAC层要解决的问题。MAC的全称是MediumAccess Control,即媒体访问控制。控制什么呢?其实就是给媒体发送数据时,控制谁先发、谁后发,防止发生混乱。MAC层解决的是第二个问题,这个问题学名叫多路访问。有很多算法可以解决。就像车管所管理车辆一样,会想出很多办法,比如以下3种方式。方式一:分多个车道。每个车一个车道,你走你的,我走我的。这在计算机网络里叫作信道划分协议。方式二:今天单号出行,明天双号出行,轮着来。这在计算机网络里叫作轮流协议。方式三:不管三七二十一,有事儿先出门,发现特堵,就回去,错过高峰再出门。这在计算机网络里叫作随机接入协议。著名的以太网,用的就是这个协议。第 3 章 重要的传输层3.1 UDP:虽然简单但是可以走制化TCP和UDP有哪些区别一般在面试时,如果面试官问这两个协议的区别是什么,大部分面试者会回答,TCP是面向连接的,UDP是面向无连接的。什么叫面向无连接,什么叫面向无连接呢?在互通之前,面向连接的协议会先建立连接。例如,TCP会进行三次握手来建立连接,而UDP不会。为什么要建立连接呢?TCP可以进行三次握手,UDP可以发三个包,难道不都是建立连接吗?所谓的建立连接,是为了维护客户端和服务端的连接而去建立一定的数据结构,从而维护双方交互的状态,并用这样的数据结构来保证面向连接的特性。例如,TCP提供可靠交付。通过TCP连接传输的数据能够无差错、不丢失、不重复,并且可以按序到达。我们都知道IP包是没有提供任何可靠性保证的,一旦发出去,就像西天取经,走丢了、被妖怪吃了,都只能随它去。TCP号称能做到连接维护程序做的事情,这部分内容在下面两节中会详细描述。而UDP继承了IP包的特性,不保证传输的数据不丢失,也不保证按序到达。再如,TCP是面向字节流的,发送时发的是一个流,没头没尾。但TCP基于的E层发送的可不是一个流,而是一个个的IP包。到TCP层后之所以变成流,是因为TCP自身的状态维护做了相应的处理。而UDP则不一样,它继承了IP包的特性,也是一个一个地发,一个一个地收。在UDP层发送的一个个数据包,还有-个名字叫数据包。另外,TCP是可以进行拥塞控制的。它意识到包已经被丢弃或者网络环境变差时,就会根据情况调整自己的行为,看看是不是数据包发得太快了,要不要发慢点。UDP就不会,应用让我发,我就发,管它洪水滔天。因而TCP是有状态服务,通俗地讲就是它“有脑子”,它精确地知道数据包是否已经被发送出去、是否被接收、发送到哪儿了、应该接收哪个数据包了,错一点儿都不行。而UDP则是无状态服务,通俗地说就是它“没脑子”,天真无邪,发出去就发出去了,后续就不管了。如果说MAC层定义了本地局域网的传输行为,IP层定义了整个网络端到端的传输行为,那么这两层就基本定义了这样的“基因”:网络传输是以包为单位的(网络包在不同的层有不同的叫法,链路层叫帧,网络层叫包,传输层叫段,我们可以笼统地称之为包),包单独传输,自行选路,在不同的设备上进行封装、解封装,不保证到达。基于这个“基因”,生下来的“孩子”UDP就完全继承了这些特性,几乎没有自己的思想。第 4 章 常用的应用层4.1 HTTP:看个新闻原来这么麻烦接下来开始讲应用层的协议。就从最常用的HTTP开始讲起。HTTP几乎是每个人上网用的第一个协议,同时也是很容易被忽略的协议。既然本节要讲看新闻,咱们就先登录某新闻网站http://www.***·com。http//www.***.com是一个URL( Uniform Resource Locator,统一资源、定位符)。之所以叫统一,是因为它是有格式的。HTTP称为协议,www.*忡.com是一个域名,表示互联网上的一个位置。有的URL会有更详细的位置标识,例如http://www.***·corn/index.html。正是因为URL是统一的,所以当你把这样一个字符串输入到浏览器的地址框里进行搜索的时候,浏览器才能知道如何进行统一处理。第 5 章 陌生的数据中心5.1 DNS:网络世界的地址簿什么是DNS服务器在网络世界,也是一样的。你肯定记得住网站的名称,但是很难记住网站的IP地址,因此也需要一个地址簿,即DNS(Domain Name System,域名系统)服务器。由此可见,DNS服务器在日常生活中多么重要。每个人上网都需要访问它。但是同时,这对它来讲也是非常大的挑战。一旦它出了故障,整个互联网都将瘫痪。另外,上网的人分布在世界各地,如果大家都去同一个地方访问某个服务器,时延将会非常大。因而,DNS服务器一定要设置成高可用、高并发和分布式的。于是,就有了树状的层次结构,如图所示。根DNS服务器:返回顶级域DNS服务器的IP地址。顶级DNS服务器:返回权威DNS服务器的IP地址。权威DNS服务器:返回相应主机的E地址。第 6 章 云计算中的网络6.1 云中网络:自己拿地成本高,购买公寓更灵活我们知道了数据中心里面堆着一大片一大片的机器,相互之间用网络连接。如果机器数量非常多,那么维护起来还是挺麻烦的,有好多不灵活的地方,比如以下几点采购不灵活:如果客户需要一台电脑,那就需要自己采购、上架、插网线、安装操作系统,周期非常长。一旦采购了,一用就得好多年,不能退货,|哪怕业务不做了,机器还在数据中心里留着。运维不灵活:一旦需要扩容CPU、内存、硬盘,都需要去机房手动弄,非常麻烦。规格不灵活:采购的机器往往动不动几百GB的内存,而每个应用往往可能只需要4核8GB,所以很多应用混合部署在上面,端口可能会相互冲突,容易相互影响。复用不灵活:一台机器,一旦一个用户不用了,另外一个用户,就需要重装操作系统。因为原来的操作系统可能遗留着很多数据,非常麻烦。第 7 章 容器技术中的网络7.1 容器网络:来去自由的日子,不买公寓去合租如果说虚拟机是买公寓,容器则相当于合租,有一定的隔离,但是隔离性没有那么好。云计算解决了基础资源层的弹性伸缩问题,却没有解决由于基础资源层弹性伸缩而带来的PaaS层应用批量、快速部署问题。于是,容器应运而生。容器即Container,而Container的另一个意思是集装箱。其实容器的思想就是要变成软件交付的集装箱。集装箱有两个特点:一是打包,二是标准。在没有集装箱的时代,假设要将货物从A运到B,中间要经过三个码头、换三次船。那么每次都要将货物卸下船来,弄得乱七八糟,然后再搬上船重新摆好,如图7-1所示。在没有集装箱的时候,每次换船,船员们都要在岸上待几天才能干完活。有了尺寸全部都一样的集装箱以后,可以把所有的货物都打包在一起,每次换船的时候,把整个集装箱搬过去就行了,几个小时就能完成,船员换船时间大大缩短,如图7-2所示。这是集装箱的“打包”和“标准”两大特点在生活中的应用。第 8 章 微服务相关协议8.1 基于XML 的SOAP:不要说NBA,请说美国职业篮球联赛ONC RPC存在哪些问题ONCRPC将客户端要发送的参数及服务端要发送的回复都压缩为一个二进制串,这样固然能够解决双方协议约定的问题,但是仍然不方便。首先,需要双方的压缩格式完全一致,一点都不能差。一旦有少许的差错,多一位、少一位或者错一位,都可能造成无法解压缩。当然,我们可以通过提高传输层的可靠性,以及加入校验值等方式来减少传输过程中的差错。其次,协议修改不灵活。除了传输过程中造成的差错,客户端因为业务逻辑的改变添加或者删除了字段,或者服务端添加或者删除了语段而没有及时通知对方,或者线上系统没有及时升级,都会造成解压缩不成功。因而,当业务发生改变,需要多传输或者少传输一些参数时,都需要及时通知对方,并且根据约定好的协议文件重新生成双方的Stub程序。自然,这样操作的灵活性比较差。如果仅仅是沟通的问题还好解决,更难处理的是版本的问题。比如在服务端提供一个服务,参数的格式是版本l的,已经有50个客户端在线上调用了。现在有一个客户端有一个需求,要加一个字段,怎么办呢?这可是一个大工程,所有的客户端都要适配这个,重新写程序,哪怕不需要这个字段的客户端也要加上这个字段,并传输0,这些程序员就很委屈,本来没我什么事儿,为什么让我也忙活?最后,ONCRPC的设计明显是面向函数的,而非面向对象。而当前面向对象的业务逻辑设计与实现方式已经成为主流。这一切的根源就在于压缩。就像平时我们爱用缩略语。如果是篮球爱好者,你直接说NBA(National Basketball Association,美国职业篮球联赛),他马上就知道什么意思,但是如果你和一个大妈说NBA,她可能就听不懂。所以,这种RPC框架只能用于客户端和服务端全由一批人开发的场景,或者至少客户端和服务端的开发人员要密切沟通,相互合作,有大量的共同语言,才能按照既定的协议顺畅地进行工作。XML与SOAP但是,一般情况下,我们做一个服务,都是要提供给陌生人用的,你和客户不会经常沟通,也没有什么共同语言。这时就不适合用缩略语,就像你给别人介绍阳A,你要说美国职业篮球联赛,这样不管他是做什么的,都能听得懂。放到我们的场景中,就是用文本类的方式进行传输。无论哪个客户端获得这个文本,都能够知道它的意义。第 9 章 网络协议知识串讲9.1 知识串讲:用"双*"的故事串起网络协议的碎片知识(上)9.2 知识串讲:用"双*"的故事串起网络协议的碎片知识(中)9.3 知识串讲:用"双*“的故事串起网络协议的碎片知识(下)9.4 搭建—个网络实验环境:授人以鱼不如授人以渔总目录: 好了,本篇文章就分享到这里了,希望这份【趣谈网络协议】对大家有所帮助,我在这里也感谢大家对我的支持????

怎么学习TCP/IP
TCP/IP协议介绍 TCP/IP的通讯协议这部分简要介绍一下TCP/IP的内部结构,为讨论与互联网有关的安全问题打下基础。TCP/IP协议组之所以流行,部分原因是因为它可以用在各种各样的信道和底层协议(例如T1和X.25、以太网以及RS-232串行接口)之上。确切地说,TCP/IP协议是一组包括TCP协议和IP协议,UDP(User Datagram Protocol)协议、ICMP(Internet Control Message Protocol)协议和其他一些协议的协议组。TCP/IP整体构架概述TCP/IP协议并不完全符合OSI的七层参考模型。传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层、数据链路层、网路层、传输层、话路层、表示层和应用层。而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为:应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。网络接口层:对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、Serial Line等)来传送数据。TCP/IP中的协议以下简单介绍TCP/IP中的协议都具备什么样的功能,都是如何工作的:1. IP网际协议IP是TCP/IP的心脏,也是网络层中最重要的协议。IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层---TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。高层的TCP和UDP服务在接收数据包时,通常假设包中的源地址是有效的。也可以这样说,IP地址形成了许多服务的认证基础,这些服务相信数据包是从一个有效的主机发送来的。IP确认包含一个选项,叫作IP source routing,可以用来指定一条源地址和目的地址之间的直接路径。对于一些TCP和UDP的服务来说,使用了该选项的IP包好象是从路径上的最后一个系统传递过来的,而不是来自于它的真实地点。这个选项是为了测试而存在的,说明了它可以被用来欺骗系统来进行平常是被禁止的连接。那么,许多依靠IP源地址做确认的服务将产生问题并且会被非法入侵。2. TCP如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向‘上’传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。面向连接的服务(例如Telnet、FTP、rlogin、X Windows和SMTP)需要高度的可靠性,所以它们使用了TCP。DNS在某些情况下使用TCP(发送和接收域名数据库),但使用UDP传送有关单个主机的信息。3.UDPUDP与TCP位于同一层,但对于数据包的顺序错误或重发。因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询---应答的服务,例如NFS。相对于FTP或Telnet,这些服务需要交换的信息量较小。使用UDP的服务包括NTP(网落时间协议)和DNS(DNS也使用TCP)。欺骗UDP包比欺骗TCP包更容易,因为UDP没有建立初始化连接(也可以称为握手)(因为在两个系统间没有虚电路),也就是说,与UDP相关的服务面临着更大的危险。4.ICMPICMP与IP位于同一层,它被用来传送IP的的控制信息。它主要是用来提供有关通向目的地址的路径信息。ICMP的‘Redirect’信息通知主机通向其他系统的更准确的路径,而‘Unreachable’信息则指出路径有问题。另外,如果路径不可用了,ICMP可以使TCP连接‘体面地’终止。PING是最常用的基于ICMP的服务。5. TCP和UDP的端口结构TCP和UDP服务通常有一个客户/服务器的关系,例如,一个Telnet服务进程开始在系统上处于空闲状态,等待着连接。用户使用Telnet客户程序与服务进程建立一个连接。客户程序向服务进程写入信息,服务进程读出信息并发出响应,客户程序读出响应并向用户报告。因而,这个连接是双工的,可以用来进行读写。两个系统间的多重Telnet连接是如何相互确认并协调一致呢?TCP或UDP连接唯一地使用每个信息中的如下四项进行确认:源IP地址 发送包的IP地址。目的IP地址 接收包的IP地址。源端口 源系统上的连接的端口。目的端口 目的系统上的连接的端口。 端口是一个软件结构,被客户程序或服务进程用来发送和接收信息。一个端口对应一个16比特的数。服务进程通常使用一个固定的端口,例如,SMTP使用25、Xwindows使用6000。这些端口号是‘广为人知’的,因为在建立与特定的主机或服务的连接时,需要这些地址和目的地址进行通讯。
你可以先看些国内的教科书,会浅显一些,等熟悉了些后,再回头来看这本书,会好很多。

想学习modbus/tcp看什么书好
Modbus学习的书籍非常少。 刚搜了一下,只有清华出版的《Modbus软件开发实战指南》不错, 应该是Modbus开发方面第一书,很系统很全面,各种代码都是开源的。其实,modbus虽然比较简单,但是如果不注意有很多坑, 特别是寄存器的位数,大小端处理,浮点数,长整数的处理等等。 目前也没有什么其他合适的书籍系统介绍,帮助理解的。清华出版的《Modbus软件开发实战指南》,内容着重讲述如何快速入门并精通Modbus软件开发技术, 适用于初学Modbus通信协议的读者,可以看看,京东或者淘宝都有。作者:大家拿链接:https://www.zhihu.com/question/29056012/answer/150841996来源:知乎 著作权归作者所有,转载请联系作者获得授权。
百度文库 里 资料 很多 建议去看看

谁有关于控制器通信协议方面的实例讲解的资料啊?
公擅本身有一套关于控制器的上乘软件,如今须要对协定进行一些修改,然则我是新手,对这方面也不是很懂得,欲望找到一个类似的实例教程参考,找到入门的办法。这里现行谢过了。

本文由 在线网速测试 整理编辑,转载请注明出处。