精华内容
下载资源
问答
  • IPv4,是互联网协议(Internet Protocol,IP)的第四版,也是第一个被广泛使用,构成现今互联网技术的基石的协议。1981年Jon Postel 在RFC791中定义了IP,Ipv4可以运行在各种各样的底层网络上,比如端对端的串行数据...

    IPV4
    IPv4,是互联网协议(Internet Protocol,IP)的第四版,也是第一个被广泛使用,构成现今互联网技术的基石的协议。1981年Jon Postel 在RFC791中定义了IP,Ipv4可以运行在各种各样的底层网络上,比如端对端的串行数据链路(PPP协议和SLIP协议) ,卫星链路等等。局域网中最常用的是以太网。
    传统的TCP/IP协议基于IPV4属于第二代互联网技术,核心技术属于美国。它的最大问题是网络地址资源有限,从理论上讲,编址1600万个网络、40亿台主机。但采用A、B、C三类编址方式后,可用的网络地址和主机地址的数目大打折扣,以至IP地址已经枯竭。其中北美占有3/4,约30亿个,而人口最多的亚洲只有不到4亿个,中国截止2010年6月IPv4地址数量达到2.5亿,落后于4.2亿网民的需求。虽然用动态IP及Nat地址转换等技术实现了一些缓冲,但IPV4地址枯竭已经成为不争的事实。在此,专家提出IPV6的互联网技术,也正在推行,但IPV4的使用过过渡到IPV6需要很长的一段过渡期。中国主要用的就是ip4,在win7中已经有了ipv6的协议不过对于中国的用户们来说可能很久以后才会用到吧。
    传统的TCP/IP协议基于电话宽带以及以太网的电器特性而制定的,其分包原则与检验占用了数据包很大的一部分比例造成了传输效率低,网络正向着全光纤网络高速以太网方向发展,TCP/IP协议不能满足其发展需要。
    1983年TCP/IP协议被ARPAnet采用,直至发展到后来的互联网。那时只有几百台计算机互相联网。到1989年联网计算机数量突破10万台,并且同年出现了1.5Mbit/s的骨干网。因为IANA把大片的地址空间分配给了一些公司和研究机构,90年代初就有人担心10年内IP地址空间就会不够用,并由此导致了IPv6 的开发。
    IPv6
    IPv6是Internet Protocol Version 6的缩写,其中Internet Protocol译为“互联网协议”。IPv6是IETF(互联网工程任务组,Internet Engineering Task Force)设计的用于替代现行版本IP协议(IPv4)的下一代IP协议。
    与IPV4相比,IPV6具有以下几个优势:
    一、IPv6具有更大的地址空间。IPv4中规定IP地址长度为32,即有2^32-1(符号^表示升幂,下同)个地址;而IPv6中IP地址的长度为128,即有2^128-1个地址。
    二、IPv6使用更小的路由表。IPv6的地址分配一开始就遵循聚类(Aggregation)的原则,这使得路由器能在路由表中用一条记录(Entry)表示一片子网,大大减小了路由器中路由表的长度,提高了路由器转发数据包的速度。
    三、IPv6增加了增强的组播(Multicast)支持以及对流的控制(Flow Control),这使得网络上的多媒体应用有了长足发展的机会,为服务质量(QoS,Quality of Service)控制提供了良好的网络平台。
    四、IPv6加入了对自动配置(Auto Configuration)的支持。这是对DHCP协议的改进和扩展,使得网络(尤其是局域网)的管理更加方便和快捷。
    五、IPv6具有更高的安全性。在使用IPv6网络中用户可以对网络层的数据进行加密并对IP报文进行校验,极大的增强了网络的安全性。
    ---------------------
    作者:满天心
    来源:CSDN
    原文:https://blog.csdn.net/qq_33857502/article/details/57413995
    版权声明:本文为博主原创文章,转载请附上博文链接!

    【本文版权归“鲜枣课堂”和小枣君所有,未经授权,请勿转载】

    这一切,要从一个“神奇的公式”说起。。。

    一个神奇的公式

    就是这个公式。。。

    就是这个超简单的公式,蕴含了我们无线通信技术的博大精深。。。

    无论是往事随风的1G、2G、3G,还是意气风发的4G、5G,说来说去,都是在这个数学公式上做文章。。。

    且听我慢慢道来。。。

    有线?无线?……

    通信技术,无论什么黑科技白科技,只分两种——有线通信和无线通信

    我和你打电话,信息数据要么在空中传播(看不见、摸不着),要么在实物上传播(看得见、摸得着)。。。

    在有线介质上传播数据,想要高速很容易。。。

    实验室中,单条光纤最大速度已达到了26Tbps。。。是传统网线的两万六千倍。。。

    空中传播这部分,才是移动通信的瓶颈所在。。。

     

    所以,5G重点是研究无线这部分的瓶颈突破。

    好大一个波。。。

    大家都知道,电波和光波都属于电磁波。。。

    电磁波的频率资源有限,根据不同的频率特性,有不同的用途。。。

     

    我们目前主要使用电波进行通信。。。

    当然,光波通信也在崛起,例如可见光通信LiFi(LightFidelity)

    ▼图片来自网络

     

     

    不偏题,回到电波先。。。

    电波属于电磁波的一种,它的频率资源也是有限的。。。

    为了避免干扰和冲突,我们在电波这条公路上进一步划分车道,分配给不同的对象和用途。。。

     

    ▼不同频率电波的用途

     

     

     

    大家注意上面图中的红色字体。一直以来,我们主要是用中频~超高频进行手机通信的。。。

    例如经常说的“GSM900”、“CDMA800”,其实就是工作频段900MHz和800MHz的意思。。。

    目前主流的4G LTE,属于超高频和特高频。。。

    我们国家主要使用超高频:

     

     

    随着1G、2G、3G、4G的发展,使用的频率是越来越高的。。。

    为什么呢?

    因为频率越高,速度越快。。。

     

    这又是为什么呢? 

    因为频率越高,车道(频段)越宽。。。

     

     

    看懂了吧。。。车道按指数级扩大。。。

     

     

    更高的频率→更大的带宽→更快的速度

     

     

    5G的频段具体是多少呢?

    上个月,我们国家工信部下发通知,明确了我国的5G初始中频频段

    3.3-3.6GHz、4.8-5GHz两个频段

    同时,24.75-27.5GHz、37-42.5GHz高频频段正在征集意见。

    目前,国际上主要使用28GHz进行试验(这个频段也有可能成为5G最先商用的频段)。

    如果按28GHz来算,根据前文我们提到的公式:

     

     

    好啦,这个就是5G的第一个技术特点——

    毫米波

     

    继续,继续。。。

    既然,频率高这么好,你一定会问:“为什么以前我们不用高频率呢?”

    原因很简单——不是不想用。。。是用不起。。。

    电磁波的一个显著特点:频率越高(波长越短),就越趋近于直线传播(绕射能力越差)。。。

    而且,频率越高,传播过程中的衰减也越大。。。

    你看激光笔(波长635nm左右),射出的光是直的吧,挡住了就过不去了。。。

    再看卫星通信和GPS导航(波长1cm左右),如果有遮挡物,就没信号了吧。。。

    而且,卫星那口大锅,必须校准瞄着卫星的方向。。。稍微歪一点,都会有影响。。。

     

     

    如果5G用高频段,那么它最大的问题,就是覆盖能力会大幅减弱。

    覆盖同一个区域,需要的基站数量将大大超过4G。

     

     

    这就是为什么这些年,电信、移动、联通为了低频段而争得头破血流。。。

    基站就是要花钱买的啊。。。能不玩命争取么。。。

    有的频段甚至被称为——黄金频段。。。

     

     

    这也是为什么5G时代,运营商拼命怼设备商。。。

    甚至威胁要自己研发通信设备。。。

     

     

     

    所以,基于以上原因。。。

    在高频率的前提下,为了减轻覆盖方面的成本压力,5G必须寻找新的出路。。。

    首先,是微基站。

     

    微基站

     

    基站有两种,微基站和宏基站。看名字就知道,微基站很小,宏基站很大!

    以前都是大的基站,建一个覆盖一大片 ▼

     

     

    以后更多的将是微基站,到处都装,随处可见。

     

    ▼微基站 看上去是不是很酷炫?

     

     

     

    微基站的造型有很多种,灵活地与周围的环境相融合(伪装),不会让用户在心理上产生不适。。。

     

    提醒

    基站对人体健康不会造成影响。

             ——小枣君宣 

     

    而且,恰好相反,其实基站数量越多,辐射反而越小!

    你想一下,冬天,一群人的房子里,一个大功率取暖器好,还是几个小功率取暖器好?

    大功率方案▼

     

     

    小功率方案▼

     

     

    基站越小巧,数量越多,覆盖就越好,速度就越快。。。

     

     天线去哪了? 

     

    大家有没有发现,以前大哥大都有很长的天线,早期的手机也有突出来的小天线,为什么后来我们就看不到带天线的手机了?

     

     

    有人说,是因为信号好了,不需要天线了。。。

    其实不对。。。信号再好,也不能没有天线。。。

    更主要的原因是——天线变小了。。。

    根据天线特性,天线长度应与波长成正比,大约在1/10~1/4之间。

     

     

    频率越高,波长越短,天线也就跟着变短啦!

    毫米波,天线也变成毫米级。。。

    这就意味着,天线完全可以塞进手机的里面,甚至可以塞很多根。。。

    这就是5G的第三大杀手锏——

     

    Massive MIMO

    MIMO就是“多进多出”(Multiple-Input Multiple-Output),多根天线发送,多根天线接收。

     

    在LTE时代就已经有MIMO了,5G继续发扬光大,变成了加强版的Massive MIMO(Massive:大规模的,大量的)。

     

     

    手机都能塞好多根,基站就更不用说了。。。

    ▼以前的基站,天线就那么几根。。。

     

     

    5G时代,就不是按根来算了,是按“阵”。。。“天线阵列”。。。

    ▼天线多得排成阵了。。。一眼看去一大片的节奏。。。

     

     

    不过,天线之间的距离也不能太近。

    因为天线特性要求,多天线阵列要求天线之间的距离保持在半个波长以上。

    不要问我为什么,去问科学家。。。

     

    你是直的?还是弯的?

     

    大家都见过灯泡发光吧? 

    其实,基站发射信号的时候,就有点像灯泡发光。

    信号是向四周发射的,对于光,当然是照亮整个房间,如果只是想照亮某个区域或物体,那么,大部分的光都浪费了。。。

     

     

    基站也是一样,大量的能量和资源都浪费了。

    我们能不能找到一只无形的手,把散开的光束缚起来呢?

    这样既节约了能量,也保证了要照亮的区域有足够的光。

    答案是:可以。

    这就是——

     

    波束赋形

    波束赋形:

    在基站上布设天线阵列,通过对射频信号相位的控制,使得相互作用后的电磁波的波瓣变得非常狭窄,并指向它所提供服务的手机,而且能跟据手机的移动而转变方向。

    这种空间复用技术,由全向的信号覆盖变为了精准指向性服务,波束之间不会干扰,在相同的空间中提供更多的通信链路,极大地提高基站的服务容量。

     

    直的都能掰成弯的。。。还有什么是通信砖家干不出来的?

    别收我钱,行不行?

     

    在目前的通信网络中,即使是两个人面对面拨打对方的手机(或手机对传照片),信号都是通过基站进行中转的,包括控制信令和数据包。。。 

    而在5G时代,这种情况就不一定了。。。

    5G的第五大特点——D2D,也就是Device to Device。

    D2D

    5G时代,同一基站下的两个用户,如果互相进行通信,他们的数据将不再通过基站转发,而是直接手机到手机。。。

     

    这样,就节约了大量的空中资源,也减轻了基站的压力。

    不过,如果你觉得这样就不用付钱,那你就图样图森破了。。。

    控制消息还是要从基站走的,而且用着频谱资源,运营商爸爸怎么可能放过你。。。

    后记。。。

    相信大家通过本文对5G和她背后的通信知识已经有了深刻理解,而这一切,都只是源于一个如今小学生都能看懂的数学公式。。。

    通信技术并不神秘,5G作为通信技术皇冠上最耀眼的宝石,也不是什么遥不可及的创新革命技术,它更多是对现有通信技术的演进。

    正如一位高人所说——

    “通信技术的极限,并不是技术工艺方面的限制,而是建立在严谨数学基础上的推论,在可以遇见的未来是基本不可能突破的。”

    如何在科学原理的范畴内,进一步发掘通信的潜力,是通信行业众多奋斗者们孜孜不倦的追求。。。

    https://www.zhihu.com/question/53878059?sort=created

    展开全文
  • 一、InetAddress 类此类表示互联网协议(IP)地址,它两个子类 Inet4Address 和 Inet6Address,分别对应IPV4和IPV6。InetAddress 类没有提供公共构造器,而是提供了几个静态方法来获取 Inet...

    Java程序可以非常方便的访问互联网上的 HTTP 服务、FTP 服务等,并可以直接取得互联网上的远程资源,还可以向远程资源发送 GET、POST 请求。

    一、InetAddress 类

    此类表示互联网协议(IP)地址,它有两个子类 Inet4Address 和 Inet6Address,分别对应IPV4和IPV6。InetAddress 类没有提供公共的构造器,而是提供了几个静态方法来获取 InetAddress 实例。

    获取InetAddress实例方法:

    static InetAddress getLocalHost() :返回本地主机。

    static InetAddress getByName(String host):在给定主机名的情况下确定主机的 IP 地址

    static InetAddress getByAddress(byte[] addr) :在给定原始 IP 地址的情况下,返回 InetAddress 对象。

    static InetAddress getByAddress(String host, byte[] addr) :根据提供的主机名和 IP 地址创建 InetAddress

    static InetAddress[] getAllByName(String host):在给定主机名的情况下,根据系统上配置的名称服务返回其 IP 地址所组成的数组

    常用方法:

    public String getHostAddress():返回 IP 地址字符串(以文本表现形式)。

    public String getHostName():获取此 IP 地址的主机名

    public String getCanonicalHostName():获取此 IP 地址的完全限定域名

    public boolean isReachable(int timeout):测试是否可以达到该地址。

    public byte[] getAddress() :返回此 InetAddress 对象的原始 IP 地址

    Demo:

    1 public classTestInetAddress {2 public static void main(String[] args) throwsException{3 InetAddress ip1 =InetAddress.getLocalHost();4 System.out.println(ip1);//njf/192.168.233.1

    5

    6 InetAddress ip2 = InetAddress.getByName("www.baidu.com");7 System.out.println(ip2);//www.baidu.com/182.61.200.6

    8

    9 byte[] ip = {(byte)182,61,(byte)200,6};10 InetAddress ip3 =InetAddress.getByAddress(ip);11 //输出ip而不是域名。如果这个IP地址不存在或DNS服务器不允许进行ip-->域名的映射,getHostName()方法就直接返回这个IP地址

    12 System.out.println(ip3);13 }14 }

    二、URL

    URI(Uniform resource identifier):表示一个统一资源标识符 (URI) 引用,用来唯一的标识一个资源。

    URL(Uniform Resource Locator):类 URL 代表一个统一资源定位符,它是指向互联网“资源”的指针。资源可以是简单的文件或目录,也可以是对更为复杂的对象的引用,例如对数据库或搜索引擎的查询。它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源。URI不能用于定位任何资源,它的唯一作用是解析,而URL则包含一个可打开到达该资源的输入流。

    URL的基本结构由5部分组成:

    ://:/#片段名

    ://:/?参数列表

    其中 # 片段名: 即锚点

    例如:http://java.sun.com/index.html#chapter1

    参数列表格式:参数名=参数值&参数名=参数值....

    例如:http://192.168.1.100:8080/helloworld/index.jsp?username=chai&password=123

    URL构造方法:

    public URL (String spec):通过一个表示URL地址的字符串可以构造一个URL对象

    public URL(URL context, String spec):通过基 URL 和相对 URL 构造一个 URL 对象

    URL(String protocol, String host, String file) :根据指定的 protocol 名称、host 名称和 file 名称创建 URL

    URL(String protocol, String host, int port, String file):根据指定 protocol、host、port 号和 file 创建 URL 对象

    Demo:

    1 URL url = new URL ("http://www.baidu.com/");2 URL downloadUrl = new URL(url, "download.html");3 URL url2 = new URL("http", "www.baidu.com", “download. html");

    4 URL gamelan = new URL("http", "www.baidu.com", 80, “download.html");

    URL常用方法:

    public String getProtocol():获取该URL的协议名

    public String getHost():获取该URL的主机名

    public String getPort():获取该URL的端口号

    public String getPath():获取该URL的文件路径,即tomcat的webapps目录下级目录名也就是资源路径名

    public String getFile():获取该URL的文件名

    public String getRef():获取该URL在文件中的相对位置

    public String getQuery():获取该URL的查询名

    public final InputStream openStream():返回一个用于从该连接读入的 InputStream。

    public Object getContent():获取次 URL 的内容

    Demo1:

    1 importjava.net.MalformedURLException;2 importjava.net.URL;3

    4 public classTestURL {5 public static void main(String[] args) throwsMalformedURLException {6 URL url = new URL("http://www.baidu.com:80/index.html?keyword=java");7 System.out.println("协议:" + url.getProtocol()); //协议:http

    8 System.out.println("主机名:" + url.getHost()); //主机名:www.baidu.com

    9 System.out.println("端口号:" + url.getPort()); //端口号:80

    10 System.out.println("路径名:" + url.getPath()); //路径名:/index.html

    11 System.out.println("文件名:" + url.getFile()); //文件名:/index.html?keyword=java12 //注意如果存在锚点,那么查询名返回null,因为#后面全部当做锚点了

    13 System.out.println("锚点:" + url.getRef()); //锚点:null

    14 System.out.println("查询名:" + url.getQuery()); //查询名:keyword=java

    15 }16 }

    Demo2:

    1 importjava.io.InputStream;2 importjava.net.URL;3

    4 public classTestURLRead {5 public static void main(String[] args)throwsException {6 URL url = new URL("http://www.baidu.com/index.html");7 /*html标签(格式化数据)、css:皮肤(美化数据)、js:互动(交互数据)、数据:*/

    8 InputStream input =url.openStream();9 byte[] data = new byte[1024];10 intlen;11 while((len=input.read(data))!=-1){12 System.out.println(new String(data,0,len,"UTF-8"));13 }14 input.close();15 }16 }

    三、URLConnection

    URL的方法openStream(),能从网络上读取数据,但是无法给服务器端发送数据,若希望给服务器端发送数据,则需要URLConnection。

    它代表应用程序和 URL 之间的通信链接。此类的实例可用于读取和写入此 URL 引用的资源。通常,创建一个到 URL 的连接需要几个步骤:

    1. 通过 URL 对象调用 openConnection 方法创建 URLConnection 对象;

    2. 处理设置参数和一般请求属性;

    3. 使用 connect 方法建立到远程对象的实际连接;

    4. 远程对象变为可用,远程对象的头字段和内容变为可访问。

    常用方法:

    public void setDoOutput(boolean dooutput)如果打算使用 URL 连接进行输出,例如给服务器传递请求参数,则将 DoOutput 标志设置为 true;如果不打算使用,则设置为 false。默认值为 false。 必须在所有getXXX()和connect()方法之前。

    public String getContentEncoding():返回 content-encoding 头字段的值。

    public int getContentLength():返回 content-length 头字段的值。

    public String getContentType():返回 content-type 头字段的值。

    public long getDate():返回 date 头字段的值。

    public long getLastModified():返回 last-modified 头字段的值。结果为距离格林威治标准时间 1970 年 1 月 1 日的毫秒数。

    public String getHeaderField(String name):返回指定的头字段的值。

    public InputStream getInputStream()返回从此打开的连接读取的输入流。

    public OutputStream getOutputStream()返回写入到此连接的输出流。

    Demo:

    1 importjava.io.BufferedReader;2 importjava.io.InputStream;3 importjava.io.InputStreamReader;4 importjava.net.URL;5 importjava.net.URLConnection;6

    7 public classTestURLConnection {8 public static void main(String[] args) throwsException{9 URL url = new URL("http://localhost/web1/login");10 //通过 URL对象调用 openConnection 方法创建URLConnection连接对象

    11 URLConnection uc =url.openConnection();12 //处理设置参数

    13 uc.setDoOutput(true);14 //给服务器发送请求参数

    15 uc.getOutputStream().write("username=admin&password=123".getBytes());16 //使用 connect 方法建立到远程对象的实际连接。

    17 uc.connect();18 //获取资源

    19 InputStream is =uc.getInputStream();20 BufferedReader br = new BufferedReader(new InputStreamReader(is,"UTF-8"));21 String str;22 while((str=br.readLine())!=null){23 System.out.println(str);24 }25 br.close();26 }27 }

    四、Socket

    通信的两端都要有Socket(也可以叫“套接字”),是两台机器间通信的端点。可以和网卡驱动进行交流,负责把数据交给网卡驱动,或者从网卡驱动中提取数据。网络通信其实就是Socket间的通信。

    Socket 可分为:

    流套接字(stream socket):使用 TCP 提供可依赖的字节流服务(ServerSocket类和Socket类)

    数据包套接字(datagram socket):使用 UDP 提供“尽力而为” 的数据报服务(DatagramSocket类)

    Socket 类的常用构造方法:

    public Socket(InetAddress address,int port):创建一个流套接字并将其连接到指定 IP 地址的指定端口号。

    public Socket(String host,int port):创建一个流套接字并将其连接到指定主机上的指定端口号。

    Socket 类的常用方法:

    public InputStream getInputStream():返回此套接字的输入流,可以用于接收消息

    public OutputStream getOutputStream():返回此套接字的输出流,可以用于发送消息

    public InetAddress getInetAddress():此套接字连接到的远程 IP 地址;如果套接字是未连接的,则返回 null。

    public InetAddress getLocalAddress():获取套接字绑定的本地地址。

    public int getPort():此套接字连接到的远程端口号;如果尚未连接套接字,则返回 0。

    public int getLocalPort():返回此套接字绑定到的本地端口。如果尚未绑定套接字,则返回 -1。

    public void close():关闭此套接字。套接字被关闭后,便不可在以后的网络连接中使用(即无法重新连接或重新绑定)。需要创建新的套接字对象。 关闭此套接字也将会关闭该套接字的 InputStream 和 OutputStream。

    public void shutdownInput():如果在套接字上调用 shutdownInput() 后从套接字输入流读取内容,则流将返回 EOF(文件结束符)。 即不能在从此套接字的输入流中接收任何数据。

    public void shutdownOutput():禁用此套接字的输出流。对于 TCP 套接字,任何以前写入的数据都将被发送,并且后跟 TCP 的正常连接终止序列。 如果在套接字上调用 shutdownOutput() 后写入套接字输出流,则该流将抛出 IOException。 即不能通过此套接字的输出流发送任何数据。

    注意:

    先后调用Socket的shutdownInput()和shutdownOutput()方法,仅仅关闭了输入流和输出流,并不等于调用Socket的close()方法。在通信结束后,仍然要调用Scoket的close()方法,因为只有该方法才会释放Socket占用的资源,比如占用的本地端口号等。

    展开全文
  • 文章目录协议三要素常用的网络协议有哪些?以购物下单过程描述小结 什么是协议?相当于正常交流必须掌握的一种规范,双发都懂的一种约束规则。比如要看发送和接收电报,需要有一个密码本来解密信息,这个密码本就是...


    什么是协议?相当于正常交流必须掌握的一种规范,双发都懂的一种约束规则。比如要看发送和接收电报,需要有一个密码本来解密信息,这个密码本就是双方的协议。

    为什么会出现协议?互联网世界可以理解为机器间的交互,若需要两台机器完成某件事,那么这两台机器的“对话”双方必须都听得懂,我们不可能要求两台机器一模一样,就像不能要求两个人一样,所以为了方便交互就制定了协议,只要大家都用各自的方式看懂协议就能交流。

    协议三要素

    • 语法,就是一段内容要符合一定的规则和格式。
    • 语义,就是这一段内容要代表某种意义。例如数字减去数字是有意义的,数字减去文本一般
      来说就没有意义。
    • 顺序,就是先干啥,后干啥。必须严格遵守的秩序。

    当然要完成不同的交互需要的协议自然不同,这里列举一段 HTTP 协议来看看协议长什么样?

    当我们打开浏览器输入网址网购时,这个网址其实就是一种协议的格式,比如,网易考拉格式像下面这样:

    HTTP/1.1 200 OK
    Date: Tue, 27 Mar 2018 16:50:26 GMT
    Content-Type: text/html;charset=UTF-8
    Content-Language: zh-CN
    <!DOCTYPE html>
    <html>
    <head>
    <base href="https://pages.kaola.com/" />
    <meta charset="utf-8"/> <title> 网易考拉 3 周年主会场 </title>
    

    我们来看看这符合协议三要素吗?
    首先,符合语法,只有按照上面的格式,浏览器才会认识。即 状态、部首、内容
    第二,符合语义,就是按照约定的意思。例如,状态 200,表示的意思就是网页成功返回,如果不成功可能就是 404
    第三,符合顺序,一点浏览器,就是发送一个 HTTP 请求,然后才有上面一串 HTTP 返回的东西。

    浏览器显然按照协议商定好的做了,最后一个五彩缤纷的页面就出现在你面前了。

    常用的网络协议有哪些?以购物下单过程描述

    用一个购物下单的过程,看看互联网世界在运行中使用了哪些网络协议。

    你先在浏览器里面输入 https://www.kaola.com ,这是一个URL。浏览器只知道名字
    是“www.kaola.com”,但是不知道具体的地点,所以不知道应该如何访问。于是,它打开地
    址簿去查找。可以使用一般的地址簿协议DNS去查找,还可以使用另一种更加精准的地址簿查找协议HTTPDNS。

    无论用哪一种方法查找,最终都会得到这个地址:106.114.138.24。这个是IP地址,是互联网
    世界的“门牌号”。

    知道了目标地址,浏览器就开始打包它的请求。对于普通的浏览请求,往往会使用HTTP协议;但是对于购物的请求,往往需要进行加密传输,因而会使用HTTPS协议。无论是什么协议,里面都会写明“你要买什么和买多少”。
    在这里插入图片描述
    DNS、HTTP、HTTPS 所在的层我们称为应用层。经过应用层封装后,浏览器会将应用层的包交给下一层去完成,通过 socket 编程来实现。下一层是传输层。传输层有两种协议,一种是无连接的协议UDP,一种是面向连接的协议TCP。对于支付来讲,往往使用 TCP 协议。所谓的面向连接就是,TCP 会保证这个包能够到达目的地。如果不能到达,就会重新发送,直至到达。

    TCP 协议里面会有两个端口,一个是浏览器监听的端口,一个是电商的服务器监听的端口。操作系统往往通过端口来判断,它得到的包应该给哪个进程
    在这里插入图片描述
    传输层封装完毕后,浏览器会将包交给操作系统的网络层。网络层的协议是 IP 协议。在 IP 协议里面会有源 IP 地址,即浏览器所在机器的 IP 地址和目标 IP 地址,也即电商网站所在服务器的IP 地址。
    在这里插入图片描述
    操作系统既然知道了目标 IP 地址,就开始想如何根据这个门牌号找到目标机器。操作系统往往会判断,这个目标 IP 地址是本地人,还是外地人。如果是本地人,从门牌号就能看出来,显然电商网站不在本地,而在遥远的地方。

    操作系统知道要离开本地去远方。虽然不知道远方在何处,但是可以这样类比一下:如果去国外要去海关,去外地就要去网关。而操作系统启动的时候,就会被 DHCP 协议配置 IP 地址,以及默认的网关的 IP 地址 192.168.1.1。

    操作系统如何将 IP 地址发给网关呢?在本地通信基本靠吼,于是操作系统大吼一声,谁是
    192.168.1.1 啊?网关会回答它,我就是,我的本地地址在村东头。这个本地地址就是MAC地
    址,而大吼的那一声是ARP协议。
    在这里插入图片描述
    于是操作系统将 IP 包交给了下一层,也就是MAC 层。网卡再将包发出去。由于这个包里面是
    有 MAC 地址的,因而它能够到达网关。

    网关收到包之后,会根据自己的知识,判断下一步应该怎么走。网关往往是一个路由器,到某个IP 地址应该怎么走,这个叫作路由表。

    路由器有点像玄奘西行路过的一个个国家的一个个城关。每个城关都连着两个国家,每个国家内部相当于一个局域网,在每个国家内,都可以使用本地的地址 MAC 进行通信。

    一旦跨越城关,就需要拿出 IP 头来,里面写着贫僧来自东土大唐(就是源 IP 地址),欲往西天拜佛求经(指的是目标 IP 地址)。路过宝地,借宿一晚,明日启行,请问接下来该怎么走啊?
    在这里插入图片描述
    城关往往是知道这些“知识”的,因为城关和临近的城关也会经常沟通。到哪里应该怎么走,这
    种沟通的协议称为路由协议,常用的有OSPF和BGP。

    城关与城关之间是国家,当网络包知道了下一步去哪个城关,还是要使用国家内部的 MAC
    地址,通过下一个城关的 MAC 地址,找到下一个城关,然后再问下一步的路怎么走,一直到走出最后一个城关。

    最后一个城关知道这个网络包要去的地方。于是,对着这个国家吼一声,谁是目标 IP 啊?目标服务器就会回复一个 MAC 地址。网络包过关后,通过这个 MAC 地址就能找到目标服务器。

    目标服务器发现 MAC 地址对上了,取下 MAC 头来,发送给操作系统的网络层。发现 IP 也对上了,就取下 IP 头。IP 头里会写上一层封装的是 TCP 协议,然后将其交给传输层,即TCP层。

    在这一层里,对于收到的每个包,都会有一个回复的包说明收到了。这个回复的包绝非这次下单请求的结果,例如购物是否成功,扣了多少钱等,而仅仅是 TCP 层的一个说明,即收到之后的回复。当然这个回复,会沿着刚才来的方向走回去,报个平安。因为一旦出了国门,西行路上千难万险,如果在这个过程中,网络包走丢了怎么办呢?因而到了要报个平安。

    如果过一段时间还是没到,发送端的 TCP 层会重新发送这个包,还是上面的过程,直到有一天收到平安到达的回复。这个重试绝非你的浏览器重新将下单这个动作重新请求一次。对于浏览器来讲,就发送了一次下单请求,TCP 层不断自己闷头重试。除非 TCP 这一层出了问题,例如连接断了,才轮到浏览器的应用层重新发送下单请求。

    当网络包平安到达 TCP 层之后,TCP 头中有目标端口号,通过这个端口号,可以找到电商网站的进程正在监听这个端口号,假设一个 Tomcat,将这个包发给电商网站。

    在这里插入图片描述
    电商网站的进程得到 HTTP 请求的内容,知道了要买东西,买多少。往往一个电商网站最初接待请求的这个 Tomcat 只是个接待员,负责统筹处理这个请求,而不是所有的事情都自己做。例如,这个接待员要告诉专门管理订单的进程,登记要买某个商品,买多少,要告诉管理库存的进程,库存要减少多少,要告诉支付的进程,应该付多少钱,等等。

    如果告诉相关的进程呢?往往通过 RPC 调用,即远程过程调用的方式来实现。远程过程调用就是当告诉管理订单进程的时候,接待员不用关心中间的网络互连问题,会由 RPC 框架统一处理。RPC 框架有很多种,有基于 HTTP 协议放在 HTTP 的报文里面的,有直接封装在 TCP 报文里面的。

    当接待员发现相应的部门都处理完毕,就回复一个 HTTPS 的包,告知下单成功。这个HTTPS的包,会像来的时候一样,经过千难万险到达你的个人电脑,最终进入浏览器,显示支付成功。

    小结

    一个简单的下单过程,中间会涉及到这么多协议。而管理一大片机器,更是一件特别有技术含量的事情。像云计算、容器、为服务等技术也需要借助各种协议来达成大规模机器之间的合作。在五层模型中常见的协议如下:
    在这里插入图片描述

    展开全文
  • iot协议简介

    2020-07-30 20:26:23
           通信对物联网来说十分常用且关键,无论是近距离无线传输技术还是移动通信技术,都影响着物联网发展。而在通信中,通信协议尤其重要,是双方...那么物联网都有哪些通信协议

           通信对物联网来说十分常用且关键,无论是近距离无线传输技术还是移动通信技术,都影响着物联网的发展。而在通信中,通信协议尤其重要,是双方实体完成通信或服务所必须遵循的规则和约定。

    在物联网协议中,我们一般分为两大类,

    一类是传输协议,一类是通信协议。传输协议一般负责子网内设备间的组网及通信;通信协议则主要是运行在传统互联网TCP/IP协议之上的设备通讯协议,负责设备通过互联网进行数据交换及通信。那么物联网都有哪些通信协议呢?

    一、REST/HTTP(松耦合服务调用)

      REST即表述性状态传递,是基于HTTP协议开发的一种通信风格。

      适用范围:REST/HTTP主要为了简化互联网中的系统架构,快速实现客户端和服务器之间交互的松耦合,降低了客户端和服务器之间的交互延迟。因此适合在物联网的应用层面,通过REST开放物联网中资源,实现服务被其他应用所调用。

      特点:

      1. REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是RESTful。

      2.客户端和服务器之间的交互在请求之间是无状态的。

      3. 在服务器端,应用程序状态和功能可以分为各种资源,它向客户端公开,每个资源都使用 URI 得到一个唯一的地址。所有资源都共享统一的界面,以便在客户端和服务器之间传输状态。

      4.使用的是标准的 HTTP 方法,比如:GET、PUT、POST 和 DELETE。

    二、CoAP协议

    CoAP(Constrained Application Protocol),受限应用协议,应用于无线传感网中协议。

      适用范围:CoAP是简化了HTTP协议的RESTful API,CoAP是6LowPAN协议栈中的应用层协议,它适用于在资源受限的通信的IP网络。

    三、MQTT协议(低带宽)

      MQTT (Message

    Queuing Telemetry Transport ),消息队列遥测传输,由IBM开发的即时通讯协议,相比来说比较适合物联网场景的通讯协议。MQTT协议采用发布/订阅模式,所有的物联网终端都通过TCP连接到云端,云端通过主题的方式管理各个设备关注的通讯内容,负责将设备与设备之间消息的转发。

      适用范围:在低带宽、不可靠的网络下提供基于云平台的远程设备的数据传输和监控。

    四、DDS协议(高可靠性、实时)

      DDS(Data Distribution Service for Real-Time Systems),面向实时系统的数据分布服务。

    适用范围:分布式高可靠性、实时传输设备数据通信。目前DDS已经广泛应用于国防、民航、工业控制等领域。

     

    五、AMQP协议(互操作性)

    AMQP(Advanced Message Queuing Protocol),先进消息队列协议,用于业务系统例如PLM,ERP,MES等进行数据交换。

      适用范围:最早应用于金融系统之间的交易消息传递,在物联网应用中,主要适用于移动手持设备与后台数据中心的通信和分析。

    六、XMPP协议(即时通信)

      XMPP(Extensible Messaging and Presence Protocol)可扩展通讯和表示协议,一个开源形式组织产生的网络即时通信协议。

    适用范围:即时通信的应用程序,还能用在网络管理、游戏、远端系统监控等。

    七、JMS

      JMS (Java Message Service),即消息服务,这是JAVA平台中著名的消息队列协议。

      Java消息服务应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。

    物联网协议对比

    协议应用的侧重方向

    以智能家居为例,智能家居中智能灯光控制,可以使用XMPP协议控制灯的开关;智能家居的电力供给,发电厂的发动机组的监控可以使用DDS协议;当电力输送到千家万户时,电力线的巡查和维护,可以使用MQTT协议;家里的所有电器的电量消耗,可以使用AMQP协议,传输到云端或家庭网关中进行分析;最后用户想把自家的能耗查询服务公布到互联网上,那么可以使用REST/HTTP来开放API服务。

    iot协议 https://zhuanlan.zhihu.com/p/139423319

    推荐iot博文 https://blog.csdn.net/anxianfeng55555/category_7776149.html

    展开全文
  • Object-C NSURL

    2015-08-03 16:26:46
    在计算机网络中常用的协议有哪些? 协议 端口 基础协议 用途 HTTP/HTTPS 80 TCP 国际互联网的支持协议 file TCP 本地文本协议 FTP 21 TCP 文件传输协议 SSH 22 TCP 用于加密和远程登录 SMTP ...
  • 入门学习Linux常用必会60个命令实例详解doc/txt

    千次下载 热门讨论 2011-06-09 00:08:45
    ◆ Windows 95/98常用的FAT 32文件系统:vfat ; ◆ Win NT/2000 的文件系统:ntfs ; ◆ OS/2用的文件系统:hpfs; ◆ Linux用的文件系统:ext2、ext3; ◆ CD-ROM光盘用的文件系统:iso9660。 虽然vfat是指...
  • OC学习----NSURL

    2015-08-04 11:40:15
    在计算机网络中常用的协议有哪些?协议 , 端口 , 基础协议 , 用途HTTP/HTTPS , 80 , TCP , 国际互联网的支持协议file, ,TCP,本地文件协议FTP,21,TCP,文件传输协议SHH,22,TCP,用于加密和远程登录SMTP,25,TCP,简单...
  • 目前国内最常用的面向智能家居的无线协议有WiFi、Zigbee、433MHz无线技术,另外还有基于电力线载波的有线解决方案。今天我们聊一下常用于智能家居的技术有哪些?433MHz及红外红外与433MHz常用于对家电或照明系统的...
  • 计算机网络常见问题

    2020-08-06 09:05:07
    计算机常用端口有哪些 OSI与TCP/IP各层结构与功能,都有哪些协议? 1.1 应用层 应用层(application-layer)任务是通过应用进程间交互来完成特定网络应用。应用层协议定义是应用进程(进程:主机中正在运行...
  • 1-01计算机网络向用户可以提供那些服务?连通性和共享。 1-07 internet(互联网...1-14计算机网络有哪些常用的性能指标?速率,带宽,吞吐量,时延,时延带宽积,往返时间RTT,利用率 1-17收发两端之间的传输距离为...
  •  旺旺(wangwang) 协议 -- 就是淘宝购物,能够直接聊天的协议包,不用登陆网页,直接使用软件旺旺聊天。  Smooth Gestures - 鼠标手势插件,很方便好用的鼠标手势插件,可以自定义手势(某些系统标签禁止运行插件,...
  • 网络编程1

    2021-02-08 23:14:51
    主要网络有哪些 局域网 城域网 广域网 最初网络–ARPANET 两种最开放网络平台 ISO 提出osi模型 IEEE 提出tcp/ip模式 Internet互联网从93年开始席卷世界 计算机网络体系结构 TCP/IP模型 1.应用层,对应...
  • HTTP Method 之 Post VS. Get

    2015-11-20 14:37:00
    那作为HTTP最常用的两个方法Get和Post 是什么,他们之间又有哪些区别?这一问题经常成为面试的考点,这里就做一个简短总结,不保证全,但保证对。 什么是HTTP? Hypertext Transfer Protocol (HT...
  • 计算机网络复习题

    2014-12-29 19:01:35
    3. 常用的信道复用技术有哪些? 1).FDM: Frequency Division Multiplexing 频分复用(1分) 2).TDM:Time Division Multiplexing 时分复用、STDM: Statistic TDM统计时分复用(2分) 3).WDM: Wavelength Division ...
  • 作为攻击者有哪些攻击思路,作为用户有哪些应对手段?在本书中我们将给出解答,带你了解浏览器安全方方面面。本书兼顾攻击者、研究者和使用者三个场景,对大部分攻击都提供了分析思路和防御方案。本书从攻击者常用...
  • C++网络爬虫项目

    2018-07-04 00:59:17
    互联网产品形形色色,产品导向营销导向,也技术导向,但是 以技术见长的互联网产品比例相对小些。搜索引擎是目前互联网产品中最具技 术含量产品,如果不是唯一,至少也是其中之一。 经过十几年...
  • 互联网常用组件框架源码分析。 4 jvm Java 虚拟机底层原理知识总结。 5 coding-interview 代码面试题集,包括《剑指 Offer》、《编程之美》等。 6 md 一款高度简洁微信 Markdown 编辑器。 ...
  • 3种常用的缓存读写策略! 系统设计 编码之道(必看 ) RestFul API 简明教程 Java 编程规范以及优雅 Java 代码实践总结 Java 命名之道 常用框架 如果你没有接触过 Java Web 开发的话,可以先看一下我总结的 ...
  • 3种常用的缓存读写策略! 系统设计 编码之道(必看 ) RestFul API 简明教程 Java 编程规范以及优雅 Java 代码实践总结 Java 命名之道 常用框架 如果你没有接触过 Java Web 开发的话,可以先看一下我总结的 ...
  • 3种常用的缓存读写策略! 系统设计 编码之道(必看 ) RestFul API 简明教程 Java 编程规范以及优雅 Java 代码实践总结 Java 命名之道 常用框架 如果你没有接触过 Java Web 开发的话,可以先看一下我总结的 ...
  • 经典设计模式总共23种(现在远不止23种了,还有一些变种),全部掌握难度太大了,我们只需要掌握一些常用的就好了,必须要掌握的我用小红旗已经标出来了。 怎么学? UML 学习 学习设计模式之前必须要学习 UML。...
  • 进程之间究竟有哪些通信方式? 键盘敲入 A 字母时,操作系统期间发生了什么... 一口气搞懂「文件系统」,就靠这 25 张图了 万字长文 | 23 个问题 TCP 疑难杂症全解析 「网络IO套路」当时就靠它追到女友 10 张图打开 ...
  • 计算机网络第五版谢希仁答案

    千次下载 热门讨论 2010-03-29 22:51:59
    1-14 计算机网络有哪些常用的性能指标? 答:速率,带宽,吞吐量,时延,时延带宽积,往返时间RTT,利用率 1-15 假定网络利用率达到了90%。试估计一下现在的网络时延是它的最小值的多少倍? 解:设网络利用率为U。...
  • 1-14 计算机网络有哪些常用的性能指标? 答:速率,带宽,吞吐量,时延,时延带宽积,往返时间RTT,利用率 1-15 假定网络利用率达到了90%。试估计一下现在的网络时延是它的最小值的多少倍 ? 解:设网络利用率为U...
  • 擅长汇编、C/C++、Java、C#等常用开发语言,2015年起录制在线视频课程《朱鹏老师嵌入式linux核心课程》累计学习人数超300万。2016年与IBM合作制作基于IBM Waston平台物联网系统开发教程,授予“IBM技术专家”...
  • CruiseYoung提供详细书签电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 Android移动应用开发从入门到精通 基本信息 原书名: Android Wireless Application Development 原出版社: ...
  • 培训机构整体师资力量及教学质量差的不堪入目,只能连哄带骗时,所常用的手段: 教学质量差,自然引起学员的不满,无法得到进一步提高,同时又希望技术得到质的飞越的急切情绪 利用该情绪,不时定期利用“教学人气...
  • C#微软培训教材(高清PDF)

    千次下载 热门讨论 2009-07-30 08:51:17
    C#--微软.NET第一语言 本书着重介绍语言本身,比较少涉及应用,不错入门书,从头讲起,不怕不明白。 <<page 1>> page begin==================== 目 目目 目 录 录录 录 第一部分 C#语言概述.4 ...

空空如也

空空如也

1 2
收藏数 37
精华内容 14
关键字:

互联网常用的协议有哪些