精华内容
下载资源
问答
  • 网络层协议详解(主要是IP协议、ICMP协议和ARP协议) 一、网络的功能 定义了基于IP协议的逻辑地址; 连接不同的媒介类型; 选择数据通过网络的最佳路径。 二、IP数据包格式 第一 版本:该字段包含的是IP的版本...

    网络层协议详解(主要是IP协议、ICMP协议和ARP协议)

    一、网络层的功能

    定义了基于IP协议的逻辑地址;

    连接不同的媒介类型;

    选择数据通过网络的最佳路径。

    二、IP数据包格式

    第一层

    版本:该字段包含的是IP的版本号,4比特。目前IP的版本为4(即IPv4)。

    首部长度:该字段用于表示IP数据包头长度,4比特。IP数据包头最短为20字节,但是其长度是可变的,具体长度取决于可选字段的长度。

    优先级与服务类型:该字段用于表示数据包的优先级和服务类型,8比特。用来区分哪些数据包优先级高和哪些数据优先级低。例:同时迅雷下载和聊QQ,其中QQ的优先级就比迅雷下载的优先级高,否则就需要等待迅雷下载完毕才能进行QQ聊天。

    总长度:该字段用以指示整个IP数据包的长度,16比特。最长为65535(2^16-1)字节,包括包头和数据。

    第二层 上层的数据到IP层会被分片

    标识符:该字段用于表示IP数据包的标识符,16比特。当IP对上层数据分片时,它将给所有的分片分配一组编号,然后将这些编号放入标识符字段中,保证分片不会被错误的重组。标识符字段用于标识一个数据包,以便接收节点可以重组被分片的数据包。

    标志:标志字段,3比特。标志和分片一起被用来传递信息。例如,当数据包从一个以太网发送到另一个以太网时,指示对当前的包不能进行分片或者一个包被分片后指示在一系列的分片中最后一个分片是否已发出。

    段偏移量:该字段用于表示段偏移量,13比特。段偏移量中包含的信息是在一个分片序列中如何将分片重新连接起来。

    第三层

    TTL:Time to live 该字段用于表示IP数据包的生命周期,8比特。该字段包含的信息可以防止一个数据包在网络中无限循环的转发下去。即防止路由环路。一个数据包经过每一个路由器,TTL将减去1。

    协议号:协议字段,8比特。该字段用以指示在IP数据包中封装的是哪一个协议,是TCP还是UDP,TCP的协议号为6,UDP的协议号为17.

    首部校验和:该字段用于表示校验和,16比特。校验和是16位的错误检测字段。目的主机和网络中的每个网关都要重新计算包头的校验和,就如同源主机做的一样。如果数据包没有被改动过,两个计算结果应该是一样的。

    第四层

    源IP地址:该字段用于表示数据包的源地址,32比特。这是一个网络地址,指的是发送该数据包设备的网络地址。

    第五层

    目标IP地址:该字段用于表示数据包的目的地址,32比特。这也是一个网络地址,但指的是接收节点的网络地址。

    三、ICMP协议

    3.1 ICMP协议概述及功能

    ICMP协议(Internet Control Message Protocol)的全称是“Internet控制消息协议”,主要用于在IP网络中发送控制消息,提供在通信环境中可能发生的各种问题的反馈。

    ICMP采取“错误侦测与回馈机制”,通过IP数据包封装,用来发送错误和控制消息。

    ICMP协议号是1

    3.2ICMP协议的封装

    传输ICMP信息时,要先封装网络层的IP报头,再交给数据链路层,即ICMP报文对应IP层的数据。

    3.3ICMP协议的基本使用

    在网络中,ICMP协议的使用是靠各种命令来实现的。以ping为例。

    3.3.1ping命令的返回信息

    1.不能建立连接的应答:

    在这里插入图片描述

    2.连接超时的应答

    PS:如果目标计算机启用了防火墙的相关设置,即使网络正常也可能会返回“请求超时”信息。

    在这里插入图片描述

    3.3.2ping命令的常用参数

    1.-a 可以显示对方主机名称

    在这里插入图片描述
    2.-l 可以设定ping包的大小。一般情况下,ping包的大小为32字节。

    在这里插入图片描述

    3.-t 长ping命令

    在window系统中,默认情况会发送4个ping包,如果在ping命令后面加上参数“-t”,系统会一直不停的ping下去。按ctrl+c结束。

    四、ARP协议

    4.1.ARP协议概述

    在局域网中,交换机通过MAC地址进行通信,要获得目标主机的MAC地址就需要使用ARP协议将目的IP地址解析成目的MAC地址。所以,ARP(Address Resolution Protocol,地址解析协议)的基本功能是负责将一个已知的IP地址解析成MAC地址,以便在交换机上通过MAC地址进行通信。

    ARP实际上是一个广播。
    如图为抓包ARP协议示例
    在这里插入图片描述

    4.2.ARP协议工作原理

    ARP缓存表:老化时间:120s(绑定的不受老化时间影响)

    ARP缓存表是主机存储在内存中的一个IP地址和MAC地址对应表。在windows系统中可以使用命令“arp-a”来显示ARP缓存表。

    如果要查找的MAC地址不再表中,ARP会发送一个广播,从而找到目的地的MAC地址。

    ARP会将收到的数据帧中IP地址和MAC地址添加到自己的ARP缓存表中。来者不拒!

    4.3ARP协议工作过程

    1.PC1想要发送数据给PC2,查看缓存表里没有PC2的MAC地址
    2.PC1发送(需要10.0.0.2的MAC地址)的广播。
    3.所有主机收到ARP请求的广播,PC2回复ARP应答 ,其他主机丢弃
    4.PC1将PC2的MAC地址保存到缓存表中,这时就可以和PC2发送数据了。

    五、ARP协议攻击原理

    5.1ARP欺骗原理

    ARP协议实际上是一种广播,广播是请求+回应,在回应过程中可以出现bug,可以主动回应欺骗其他主机或者网关等。

    5.2主机如何绑定ARP来防止ARP欺骗

    如何查找IP的接口号:netsh interface ipv4 show neighbors

    格式:netsh interface ipv4 set neighbors 接口号 IP地址 IP地址对应的MAC地址

    附:如何解除绑定

    格式:netsh -c “i i” delete neighbors idx号 IP地址 IP地址对应的MAC地址

    如何查看idx号:netsh i i show in

    展开全文
  • TCP/IP协议模型(Transmission Control Protocol/Internet Protocol),包含了一系列构成互联网基础的网络协议,是Internet的核心协议,通过20多年的发展已日渐成熟,并被广泛应用于局域网和广域网中,目前已成为...

    一、 HTTP请求和响应步骤
    在这里插入图片描述

    以上完整表示了HTTP请求和响应的7个步骤,下面从TCP/IP协议模型的角度来理解HTTP请求和响应如何传递的。

    二、TCP/IP协议
    TCP/IP协议模型(Transmission Control Protocol/Internet Protocol),包含了一系列构成互联网基础的网络协议,是Internet的核心协议,通过20多年的发展已日渐成熟,并被广泛应用于局域网和广域网中,目前已成为事实上的国际标准。TCP/IP协议簇是一组不同层次上的多个协议的组合,通常被认为是一个四层协议系统,与OSI的七层模型相对应。

    HTTP协议就是基于TCP/IP协议模型来传输信息的。
    在这里插入图片描述

    (1). 链路层

    也称作数据链路层或网络接口层(在第一个图中为网络接口层和硬件层),通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。ARP(地址解析协议)和RARP(逆地址解析协议)是某些网络接口(如以太网和令牌环网)使用的特殊协议,用来转换IP层和网络接口层使用的地址。

    (2). 网络层

    也称作互联网层(在第一个图中为网际层),处理分组在网络中的活动,例如分组的选路。在TCP/IP协议族中,网络层协议包括IP协议(网际协议),ICMP协议(Internet互联网控制报文协议),以及IGMP协议(Internet组管理协议)。

    IP是一种网络层协议,提供的是一种不可靠的服务,它只是尽可能快地把分组从源结点送到目的结点,但是并不提供任何可靠性保证。同时被TCP和UDP使用。TCP和UDP的每组数据都通过端系统和每个中间路由器中的IP层在互联网中进行传输。

    ICMP是IP协议的附属协议。IP层用它来与其他主机或路由器交换错误报文和其他重要信息。

    IGMP是Internet组管理协议。它用来把一个UDP数据报多播到多个主机。

    (3). 传输层

    主要为两台主机上的应用程序提供端到端的通信。在TCP/IP协议族中,有两个互不相同的传输协议:TCP(传输控制协议)和UDP(用户数据报协议)。

    TCP为两台主机提供高可靠性的数据通信。它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。由于运输层提供了高可靠性的端到端的通信,因此应用层可以忽略所有这些细节。为了提供可靠的服务,TCP采用了超时重传、发送和接收端到端的确认分组等机制。

    UDP则为应用层提供一种非常简单的服务。它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。一个数据报是指从发送方传输到接收方的一个信息单元(例如,发送方指定的一定字节数的信息)。UDP协议任何必需的可靠性必须由应用层来提供。
    (4). 应用层

    应用层决定了向用户提供应用服务时通信的活动。TCP/IP 协议族内预存了各类通用的应用服务。包括 HTTP,FTP(File Transfer Protocol,文件传输协议),DNS(Domain Name System,域名系统)服务。

    在这里插入图片描述

    当应用程序用TCP传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息),该过程如图所示。

    在这里插入图片描述
    当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各层协议加上的报文首部。每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的上层协议。这个过程称作分用(Demultiplexing)。协议是通过目的端口号、源I P地址和源端口号进行解包的。

    通过以上步骤我们从TCP/IP模型的角度来理解了一次HTTP请求与响应的过程。

    下面这张图更清楚明白:
    在这里插入图片描述
    下面具体来看如何进行一步步操作的。

    三、TCP三次握手
    TCP是面向连接的,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。在TCP/IP协议中,TCP协议提供可靠的连接服务,连接是通过三次握手进行初始化的。三次握手的目的是同步连接双方的序列号和确认号并交换 TCP窗口大小信息。
    在这里插入图片描述

    第一次握手:建立连接。客户端发送连接请求报文段,将SYN位置为1,Sequence Number为x;然后,客户端进入SYN_SEND状态,等待服务器的确认;

    第二次握手:服务器收到SYN报文段。服务器收到客户端的SYN报文段,需要对这个SYN报文段进行确认,设置Acknowledgment Number为x+1(Sequence Number+1);同时,自己自己还要发送SYN请求信息,将SYN位置为1,Sequence Number为y;服务器端将上述所有信息放到一个报文段(即SYN+ACK报文段)中,一并发送给客户端,此时服务器进入SYN_RECV状态;

    第三次握手:客户端收到服务器的SYN+ACK报文段。然后将Acknowledgment Number设置为y+1,向服务器发送ACK报文段,这个报文段发送完毕以后,客户端和服务器端都进入ESTABLISHED状态,完成TCP三次握手。

    为什么要三次握手
    为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。

    具体例子:“已失效的连接请求报文段”的产生在这样一种情况下:client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段。但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求。于是就向client发出确认报文段,同意建立连接。假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了。由于现在client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送数据。但server却以为新的运输连接已经建立,并一直等待client发来数据。这样,server的很多资源就白白浪费掉了。采用“三次握手”的办法可以防止上述现象发生。例如刚才那种情况,client不会向server的确认发出确认。server由于收不到确认,就知道client并没有要求建立连接。”

    四、HTTP协议
    Http是什么?
    通俗来讲,他就是计算机通过网络进行通信的规则,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据。目前任何终端(手机,笔记本电脑。。)之间进行任何一种通信都必须按照Http协议进行,否则无法连接。

    四个基于:

    请求与响应:客户端发送请求,服务器端响应数据

    无状态的:协议对于事务处理没有记忆能力,客户端第一次与服务器建立连接发送请求时需要进行一系列的安全认证匹配等,因此增加页面等待时间,当客户端向服务器端发送请求,服务器端响应完毕后,两者断开连接,也不保存连接状态,一刀两断!恩断义绝!从此路人!下一次客户端向同样的服务器发送请求时,由于他们之前已经遗忘了彼此,所以需要重新建立连接。

    应用层:Http是属于应用层的协议,配合TCP/IP使用。

    TCP/IP:Http使用TCP作为它的支撑运输协议。HTTP客户机发起一个与服务器的TCP连接,一旦连接建立,浏览器(客户机)和服务器进程就可以通过套接字接口访问TCP。

    针对无状态的一些解决策略:

    有时需要对用户之前的HTTP通信状态进行保存,比如执行一次登陆操作,在30分钟内所有的请求都不需要再次登陆。于是引入了Cookie技术。

    HTTP/1.1想出了持久连接(HTTP keep-alive)方法。其特点是,只要任意一端没有明确提出断开连接,则保持TCP连接状态,在请求首部字段中的Connection: keep-alive即为表明使用了持久连接。
    等等还有很多。。。。。。

    下面开始讲解重头戏:HTTP请求报文,响应报文,对应于上述步骤的2,3,4,5,6。

    HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的。HTTP有两类报文:请求报文和响应报文。

    五、HTTP请求报文
    一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成,下图给出了请求报文的一般格式。
    在这里插入图片描述

    1.请求行
    请求行分为三个部分:请求方法、请求地址和协议版本

    请求方法

    HTTP/1.1 定义的请求方法有8种:GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS、TRACE。

    最常的两种GET和POST,如果是RESTful接口的话一般会用到GET、POST、DELETE、PUT。

    请求地址

    URL:统一资源定位符,是一种自愿位置的抽象唯一识别方法。

    组成:<协议>://<主机>:<端口>/<路径>

    端口和路径有时可以省略(HTTP默认端口号是80)

    如下例:
    在这里插入图片描述

    有时会带参数,GET请求

    协议版本

    协议版本的格式为:HTTP/主版本号.次版本号,常用的有HTTP/1.0和HTTP/1.1

    2.请求头部
    请求头部为请求报文添加了一些附加信息,由“名/值”对组成,每行一对,名和值之间使用冒号分隔。

    常见请求头如下:
    在这里插入图片描述

    请求头部的最后会有一个空行,表示请求头部结束,接下来为请求数据,这一行非常重要,必不可少。

    3.请求数据
    可选部分,比如GET请求就没有请求数据。

    下面是一个POST方法的请求报文:

    POST  /index.php HTTP/1.1    请求行
    Host: localhost
    User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2  请求头
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
    Accept-Language: zh-cn,zh;q=0.5
    Accept-Encoding: gzip, deflate
    Connection: keep-alive
    Referer: http://localhost/
    Content-Length:25
    Content-Type:application/x-www-form-urlencoded
      空行
    username=aa&password=1234  请求数据

    六、HTTP响应报文
    在这里插入图片描述
    HTTP响应报文主要由状态行、响应头部、空行以及响应数据组成。

    1.状态行
    由3部分组成,分别为:协议版本,状态码,状态码描述。

    其中协议版本与请求报文一致,状态码描述是对状态码的简单描述,所以这里就只介绍状态码。

    状态码

    状态代码为3位数字。
    1xx:指示信息–表示请求已接收,继续处理。
    2xx:成功–表示请求已被成功接收、理解、接受。
    3xx:重定向–要完成请求必须进行更进一步的操作。
    4xx:客户端错误–请求有语法错误或请求无法实现。
    5xx:服务器端错误–服务器未能实现合法的请求。

    下面列举几个常见的:
    在这里插入图片描述

    2.响应头部
    与请求头部类似,为响应报文添加了一些附加信息

    常见响应头部如下:
    在这里插入图片描述

    3.响应数据
    用于存放需要返回给客户端的数据信息。

    下面是一个响应报文的实例:

    HTTP/1.1 200 OK  状态行

    Date: Sun, 17 Mar 2013 08:12:54 GMT  响应头部
    Server: Apache/2.2.8 (Win32) PHP/5.2.5
    X-Powered-By: PHP/5.2.5
    Set-Cookie: PHPSESSID=c0huq7pdkmm5gg6osoe3mgjmm3; path=/
    Expires: Thu, 19 Nov 1981 08:52:00 GMT
    Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
    Pragma: no-cache
    Content-Length: 4393
    Keep-Alive: timeout=5, max=100
    Connection: Keep-Alive
    Content-Type: text/html; charset=utf-8

    空行

      响应数据 HTTP响应示例<title> Hello HTTP!

    关于请求头部和响应头部的知识点很多,这里只是简单介绍。

    通过以上步骤,数据已经传递完毕,HTTP/1.1会维持持久连接,但持续一段时间总会有关闭连接的时候,这时候据需要断开TCP连接。

    七、TCP四次挥手
    当客户端和服务器通过三次握手建立了TCP连接以后,当数据传送完毕,肯定是要断开TCP连接的啊。那对于TCP的断开连接,这里就有了神秘的“四次分手”。
    在这里插入图片描述

    第一次分手:主机1(可以使客户端,也可以是服务器端),设置Sequence Number,向主机2发送一个FIN报文段;此时,主机1进入FIN_WAIT_1状态;这表示主机1没有数据要发送给主机2了;

    第二次分手:主机2收到了主机1发送的FIN报文段,向主机1回一个ACK报文段,Acknowledgment Number为Sequence Number加1;主机1进入FIN_WAIT_2状态;主机2告诉主机1,我“同意”你的关闭请求;

    第三次分手:主机2向主机1发送FIN报文段,请求关闭连接,同时主机2进入LAST_ACK状态;

    第四次分手:主机1收到主机2发送的FIN报文段,向主机2发送ACK报文段,然后主机1进入TIME_WAIT状态;主机2收到主机1的ACK报文段以后,就关闭连接;此时,主机1等待2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,主机1也可以关闭连接了。

    为什么要四次分手
    TCP协议是一种面向连接的、可靠的、基于字节流的运输层通信协议。TCP是全双工模式,这就意味着,当主机1发出FIN报文段时,只是表示主机1已经没有数据要发送了,主机1告诉主机2,它的数据已经全部发送完毕了;但是,这个时候主机1还是可以接受来自主机2的数据;当主机2返回ACK报文段时,表示它已经知道主机1没有数据发送了,但是主机2还是可以发送数据到主机1的;当主机2也发送了FIN报文段时,这个时候就表示主机2也没有数据要发送了,就会告诉主机1,我也没有数据要发送了,之后彼此就会愉快的中断这次TCP连接。

    通过以上步骤便完成了HTTP的请求和响应,进行了数据传递,这其中涉及到需要知识点,都进行了逐一了解。

    作者:Ruheng
    链接:https://www.jianshu.com/p/c1d6a294d3c0
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    展开全文
  • 五.传输和应用协议和作用

    千次阅读 2017-11-20 13:02:13
    一.路由和交换对比 列表 路由 交换 OSI模型的位置 网络层(3) 数据链路层(2) 根据( )发送数据 路由表 mac地址表 表中有哪些内容 ...TCP/IP传输层包含两个协议: 传输控制协议 Transmission Co

    一.路由和交换对比

    列表 路由 交换
    OSI模型的位置 网络层(3) 数据链路层(2)
    根据(  )发送数据 路由表 mac地址表
    表中有哪些内容 有网段和接口 有mac地址和接口

    二.TCP/IP传输层概述

    TCP/IP是指一整套数据通信协议,传输层完成端到端的连接和传输.
    TCP/IP传输层包含两个协议:

    • 传输控制协议

    Transmission Control Protocol —- TCP

    • 用户数据报协议

    User Dategram Protocol ————–UDP


    TCP在网络中使用的范围很广,下面将列出一些常用的端口号及其功能.以便进一步对TCP进行检测和管理.

    常用的TCP端口及应用

    端口 协议 说明
    80 http web服务器所开放的进程端口,用于客户端http访问
    21 FTP FTP服务器所开放的控制端口,用于上传下载
    23 Telnet 用于远程登录,通过连接目的计算机的这一端口,得到验证后可以远程控制管理目标计算机
    25 SMTP SMTP服务器开放的端口,用于发送邮件
    53 DNS DNS服务器开放的端口,当用户输入网站的名称后,由DNS负责将它解析成IP地址,这个过程中用到的端口号就是53

    UDP的使用

    端口 协议 说明
    7 Echo 将收到的数据包回送到发送器
    53 Nameserver 域名服务
    69 TFTP 简单文件传输协议
    111 RPC 远程过程调用
    123 NTP 网络时间协议

    三.常用的应用层协议

    缩写 全文
    http 超文本传送协议
    https 基于安全套接字层的http协议
    ftp 文件传输协议
    dns 域名系统
    smtp 邮件传输协议
    pop3 邮局协议
    ssh 安全外壳协议

    http

    用于传输Internet浏览器使用的普通文本,超文本,音频和视频等数据
    端口号为TCP的80

    https

    基于HTTP开发,提供加密,可以确保消息的私有性和完整性
    端口为443

    FTP

    用于传输文件
    端口为TCP的21和20

    DNS

    用来完成域名和IP地址之间的映射
    端口为TCP或UDP的53

    这里写图片描述

    SMTP

    用于发送和接收邮件
    端口为25

    POP3

    用于客户端接收邮件
    端口号为110

    SSH

    建立在应用层和传输层基础上的安全协议,ssh是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议,利用ssh协议可以有效防止远程管理过程中的信息泄漏问题.

    展开全文
  • 互联网协议又叫 IP 协议,它是 TCP/IP 栈中最重要的协议之一,位于网络之中。如果你想全面掌握 IP 协议...IP 协议包含哪些字段,请求头、响应头分别有哪些? 抓包神器 BurpSuit 的使用。 路由协议有哪些? IP 地址...

    互联网协议又叫 IP 协议,它是 TCP/IP 栈中最重要的协议之一,位于网络层之中。如果你想全面掌握 IP 协议,本文非常适合你,掌握好了 IP 协议,对于面试也有很有帮助,因为很多企业在职业要求都会有掌握 TCP/IP 者优先这一条。

    阅读完本 Chat,你将掌握以下知识:

    1. IP 协议包含哪些字段,请求头、响应头分别有哪些?
    2. 抓包神器 BurpSuit 的使用。
    3. 路由协议有哪些?
    4. IP 地址是怎么划分的,如果进行子网划分,子网掩码是什么?
    5. HTTPS 的工作流程是怎样的?
    6. 如何用代码实现一个简易的 HTTP 服务器?

    在正式开始之前,我先给你做个解释,我最初是考虑 IP 协议和 HTTP 协议分两篇文章来写,但是在内容介绍的时候我把两部分的内容都加进去了,因此,我决定两篇文章集成到一起供你学习研究。

    IP 协议及其子网划分

    说到 IP,我们每天都会接触。比如,个人电脑连网后,通过使用 ipconfig 或 ifconfig 命令后就可以查看当前电脑的 IP 地址。再比如,我们在阿里云购买了服务器,也会给该服务器自动分配 IP 地址(包括公网地址和私网地址)。

    除此之外,如果我们要在本地电脑远程登录服务器,只要知道服务器 IP 地址(当然还有服务器账号和密码,这个不是本文研究的重点),就能找到目标服务器,从而实现服务器的远程连接。那么,本地电脑是如何很快地找到目标服务器的呢?本文会一一满足你的好奇心,我们将慢慢地揭开它的神秘面纱。

    IP 地址的作用:方便路由寻址

    在讲解理论知识之前,我们先以一段生活中的例子,来告诉你为什么需要 IP 地址。

    假设有一个程序员小张,他在成都市的一个互联网公司工作,情人节快到了,他想寄一束玫瑰花给远在北京的女朋友小丽。这时,他就需要联系快递员,快递员上门后给了他一张快递单,他按照要求填写好自己的地址、姓名、电话以及女朋友的地址、姓名、电话。

    快递员收到快递单后,按照快递单上的地址开始准备发货,他不会直接发送到北京小丽所在地址,而是先发到成都中转站,成都中转站收到后,继续发给武汉中转站,经过一系列中转后,最终到达北京中转站,北京中转站在收到快递后,根据快递单上的信息,知道目标地址就是本辖区所在地,然后将快递分配快递员,最终准确无误地送到小丽手中。

    以上就是一个快递从源地址到目标地址的收发全过程,你肯定对此都很熟悉。其实,在互联网世界中,两个设备之间要进行连接,也会经历如快递一样的流程。其中,小张的地址就相当于源 IP 地址,小丽的地址就相当于目标 IP 地址,而每个快递中转站,你可以理解为路由器。主机 A 要想顺利找到主机 B,一般情况下都会经过路由器进行转发,而路由器之间是如何进行消息传递的,这就需要路由器之间制定一个双方都认可的协议,即路由协议。

    两台主机通过路由器进行间接连接后,总要做点什么,比如 A 发送一段文字告诉 B:Hello,这就需要 AB 之间协商好一个通信方式,从最上的应用层到传输层,再到网络层,一层一层地将数据原封不动地发送过去,而在网络层,它们就会通过 IP 协议传递数据。

    所以接下来,我将分别介绍路由协议和 IP 协议,你如果能深刻理解这些协议,就会在面试中能有一项加分项。

    路由协议

    在当今互联网中,有很多不同的运营商网络,比如移动、联通、电信,它们的网络拓扑是不一样的,甚至千差万别。整个互联网拓扑,我们可以用下面的图来简单表示:

    在这里插入图片描述

    因为每个运营商都会有一些边缘路由器和其他运营商的边缘路由器连接,所以这些边缘路由器必须有统一的路由协议来支持,这就是 BGP 协议,它被称为外部网关协议,即 EGP,而每个运营商内部都会有自己的路由器,这就要求边缘路由必须学会两种甚至多种路由协议。运营商内部采用的路由协议通常是 RIP 协议和 OSPF 协议,它们被称为内部网关协议,即 IGP。

    所以接下来,我将依次为大家剖析 RIP、OSPF 和 BGP 协议。

    RIP 协议

    RIP 协议,英文全称为 Router Information Protocol,即路由信息协议,它采用的是一种被称为“距离—矢量”的算法,所谓“距离—矢量”,它单纯地根据“跳数”来确定下一条的路由地址。RIP 规定,一个路由器到直连网络的跳数为 1,此后每经过一个路由器,则跳数加 1。RIP 协议认为,一个好的路由就是它通过的路由器的数目少,即选择跳数尽可能少的路径。说的很抽象,我用一张图来详细说明下“距离—矢量”算法。

    在这里插入图片描述

    如上图所示,我们设源路由器为 A,目标路由器为 D,则 A 到 D 有两条路径可选择,即 A->B->C->D 和 A->E->F->C->D,按照 RIP 协议的规定,这两条路径的跳数分别为 3 和 4,那么最终所选择的路径就是 A->B->C->D。

    RIP 协议只与自己的“邻居”交换信息,默认每隔 30 秒会发送一次(发送消息并更新路由吗(是的))路由更新,如果一个路由在 180 秒还没有刷新信息,则会将距离设置为无限大,从而从路由表中移除该信息。每个路由器会将它的路由表的所有信息共享出来,并且它最多支持 15 个跳数,超过 15 个则会被丢弃,因此 RIP 协议一般只支持小型网络。

    注意:上述所说的只于邻居交换信息,不代表它只交换邻居自己的路由信息,而是交换邻居的路由表的所有信息。

    如图:

    在这里插入图片描述

    路由器 A 的邻居为 B,第一个 30 秒,它和 B 交换信息,由于路由器 B 还没有刷新路由表,因此路由器 A 的路由表新加入了路由器 B 的信息,这时路由器 B 同 C 交换了信息。此时,路由器 B 的路由表加入了路由器 C 的信息。又过了 30 秒,路由器 A 同路由器 B 交换信息,由于路由器 B 的路由表多了路由器 C 的信息,这时路由器 A 也会更新路由器 C 的信息。如果在某一时刻,路由器 B 挂掉了,路由器 A 在 180 秒后还没有收到路由器 B 的更新信息,则会从路由表移除路由器 B 的路由表信息。

    OSPF 协议

    为了解决大型网络的路由协议问题,OSPF 应运而生,它的英文全称为 Open Shortest Path First,即开发最短路径优先协议。OSPF 协议是一种基于“链路状态”的路由协议,它采用迪杰斯特拉算法来构建最短路径,假设 A 到 B 的带宽为 100Mbps,A 到 C 为 10Mbps,那么 A 到 B 的权重可以设置为 1,而 A 到 C 则设置为 10,这时,从 A 路由出发,下一跳则会经过 B,再到达 C。

    假设 A 到 B,B 到 C 的带宽都为 100Mbps,A 到 C 的带宽为 10Mbps,按照 RIP 协议的算法,A 的下一跳直接为 C,但是 A 到 B 再到 C 虽然跳数多了,但是带宽增加了,所以传输时间上会比 A 直接到 C 要快,因此这种情况下 OSPF 协议更加合理一些。

    下面通过一个图示来演示最短路径的构建方法。

    在这里插入图片描述

    图中,数字就代表每个链路状态的权重值,数字越小,链路状态越优,根据迪杰斯特拉算法,最短路径为 A->B->D->F。

    但是,在一个大型自治系统中,路由器数量可能会很多,如果每次从一个源出发,寻找目标路由器,就算根据迪杰斯特拉算法找到了最短路径,中间经过的路由器也可能会很多,如果是这样,效率也会很低。因此,OSPF 提出了区域的概念,即在同一个区域的路由器都当做一个内部网络,每个区域也会有一个边缘路由器,这些边缘路由器同时属于多个区域,当区域 A 的一个路由器想要找到区域 B 的一个路由器,他只需找到同时属于 A 和 B 的边缘路由器,再由该边缘路由器找到区域 B 的目标路由器即可。如图:

    在这里插入图片描述

    BGP 协议

    前面已经提到,BGP 协议是一种外部网关协议,它用于不同自治系统(也成为 AS)之间的路由信息交换。BGP 既不是纯粹的矢量-距离协议,也不是纯粹的链路状态协议,通常被称为通路向量路由协议。这是因为 BGP 在发布到一个目的网络的可达性的同时,包含了在 IP 分组到达目的网络过程中所必须经过的 AS 的列表。对于 BGP 的内部机制,你大可不必深究,只需要知道它主要用于在不同自治系统之间传递信息即可。

    IP 协议概述

    IP 协议(Internet Protocol),顾名思义为互联网协议,它主要用于数据间的不可靠的面向无连接的通信,实现三层数据封装与 IP 寻址。

    注:文章主要详解 IPv4,关于 IPv6,将在最后一节做一个简要介绍。

    定义中说的不可靠并不是贬义词,不可靠意味着效率,所谓专业人干专业事,我们将可靠连接交给上层的 TCP 协议(后面会介绍)就行了。互联网发展到今天,全世界有无数的主机,如果每台主机经过网络层的时候都像 TCP 协议一样进行可靠连接,如三次握手四次挥手,我们的网络将瘫痪成什么样子,可想而知。

    阅读全文: http://gitbook.cn/gitchat/activity/5f1aab311fbaaf30a27fcaa8

    您还可以下载 CSDN 旗下精品原创内容社区 GitChat App ,阅读更多 GitChat 专享技术内容哦。

    FtooAtPSkEJwnW-9xkCLqSTRpBKX

    展开全文
  • 之前有说,帧结构包含帧头:目标MAC,源MAC和类型,上三数据,以及帧尾:FCS帧校验序列,那么随着对OSI模型和TCP/IP的深入分析,现在开始讨论上三数据中的IP包头,它在传输过程中,都有哪些元素组成,这些元素是...
  • 来自网络小白的笔记二 概述 ARP为IP地址到对应的硬件...这个过程称为广播,ARP请求数据帧中包含目的主机的IP地址,表示“如果你是这个IP地址的拥有者,请回答你的硬件地址”。 目的主机的ARP收到这份广播后,...
  • 1-TCP/IP的四和OSI七的关系,TCP使用的是四,但经常有人拿OSI七来说TCP/IP的事,这让我蒙了一会儿。 以下是百度知道+个人理解 1.1-OSI 是标准化组织为了实现设备互联而提出的一个纯理论的框架性的概念。也可...
  • 网络包含了许多协议,还有ICMP协议、IPX协议等。其中最为重要的协议就是IP协议。网络提供了IP路由功能。理解IP路由除了要熟悉IP协议的工作机制之外,还必须理解IP编址以及如何合理地使用IP地址来设计网络。...
  • 这一章主要概述了TCP/IP协议族的各种协议,主要讨论了传输层的 TCP UDP 和SCTP协议的通信过程。...同时也能大致看出每一层包含哪些协议: api 以上的都属于应用层, 传输层只有TCP UDP SCTP三个协议, ipv4 ipv6
  • HTTP协议通信原理

    2020-10-25 15:06:43
    涉及到网络协议,我们一定需要知道OSI七网络模型和TCP/IP概念模型,OSI七网络模型包含(应用、表示、会话、传输、网络、数据链路、物理)、TCP/IP概念模型包含(应用、传输、网..
  • Http协议通信原理

    2020-06-11 17:58:25
    一、域名被成功解析以后,客户端...涉及到网络协议,我们一定需要知道 OSI 七网络模型和 TCP/IP概念模型,OSI 七网络模型包含(应用、表示、会话、传输、网络、数据链路、物理)、TCP/IP
  • 常用网络通信协议结构图分别详细的画出了OSI的七层网络结构图和TCP/IP的五层结构图. 对每一层具体协议有明确说明,对网络编程具有很大的...每一层包含哪些网络协议,每个协议是什么意思都有明确说明,值得参考和收藏。
  • 这篇文章的重点不只是解释什么是http协议,更重要的是,了解http协议后,你可以了解http请求包request和回应包response包含哪些数据,从而更轻松地应付接口的返回包设置。 概念:http协议全名超文本传输协议,它是...
  • 用wireshark抓包带你详解下IP报文头

    千次阅读 2020-05-26 23:21:29
    我们前面介绍了主机在传输数据之前要进行封装,在网络封装的就是是IP报文头,下面我们就一起看看IP报文头究竟包含哪些信息,这些信息又有什么作用呢? 1 IP报文格式 如下图所示即为IP报文头 ...
  • 计算机网络(TCP/IP

    2020-07-27 10:51:31
    1.1 OSI 与 TCP/IP的结构与功能,都有哪些协议,协议 所占端口号。 1、物理 为了建立、维护和查出物理链路所需的机械的、电气的、功能的和规程的特性,其作用是使原始的数据比特流能在物理媒体上传输。具 ...
  • 网络:在网络通过IP协议ip地址和数据报封装为ip数据报,在进行封装的时候需要目的MAC地址,这个时候使用ARP协议来获取目的MAC地址(主机发送信息时会将包含目标IP地址信息ARP请求广播到网络上所有的主机,并...
  • 访问一个网址会经历哪些流程

    万次阅读 2019-04-27 00:31:38
    可以看到 TCP/IP 模型的协议包含,对等传输表达的就是如图 1 虚线所示,应用之间互相通信,传输之间互相交换数据,同理网络和物理。这里面以 HTTP 这个常见的应用层协议为例说明对等传输。  &...
  • TCP/IP模型分为应用,传输,网络,数据链路以及物理。 1.应用负责应用程序之间的交流,这里使用应用的http协议以及使用位于应用与传输之间的ssl/tls协议,请求https ????/xx.io。为数据加上...
  • 用户通过浏览器访问网页,在应用就是用户的浏览器和服务器的Web App会话,而建立应用的会话需要依托TCP/IP协议封装与数据传输,具体步骤有: (1)用户输入URL (2)浏览器代为封装成符合http格式的Request...
  • 1.OSI七模型,每具体包含哪些协议?   第一:物理() 第二:数据链路(物理寻址,同时将原始比特流转变成逻辑传输线路)有MPLS多协议标签交换协议 XTP压缩传输协议 DCAP数据转接客户访问协议 ;...
  • 计算机网络期末复习总结

    万次阅读 多人点赞 2018-05-30 21:57:14
    概述 网络的基本指标及其概念? IOS,TCP/IP,五协议体系结构。 物理 物理基本概念和最小单位。 ...数据链路 ...数据链路特有的硬件设备集线器和交换机的工作原理,之间的区别?...包含哪些协议,最主...
  • 后端笔试题及其解答

    万次阅读 2020-02-29 22:47:36
    1.请基于 TCP/IP网络模型描述下当我们在浏览器请求 https://pp.io 站点时,发生了哪些事情? 答: TCP/IP模型分为应用,传输,网络,数据链路以及物理。 1.应用负责应用程序之间的交流,这里...
  • 2、七网络模型每一都有哪些协议? 3. TCP 有哪些状态。 4. 三次握手、四次挥手。握手为啥是三次不是两次? 5、TCP/IP协议指什么?简单说一下怎么通过这四来传递数据和解析数据? 6、从服务器返回的...
  • 协议层次以及它们的服务类型OSI七模型TCP/IP模型五模型OSI 模型和 TCP/IP 模型异同比较OSI 和 TCP/IP 协议之间的对应关系数据如何在各之间传输【数据的封装过程】第二部分:应用HTTP 头部包含哪些信息...
  • OSI与TCP/IP的结构与功能,都有哪些协议 OSI七模型及其包含的协议如下: 物理: 在物理媒体上传输原始的数据比特流,传输单位为bit,主要包括的协议为:IEE802.3 CLOCK RJ45 数据链路: 将数据分成一个个...
  • 嵌入式软件工程师面试遇到的经典题目

    千次阅读 多人点赞 2020-11-04 23:43:16
    5、分别说明一下三个变量声明得含义:6、简述TCP/IP包含哪些分段,每一有哪些常用协议?7、从在浏览器地址栏中输入www.baidu.com到看到百度首页,这个过程中间经历了什么?都涉及到哪些网络协议?8、编写strcat...
  • 2.TCP/IP体系结构中的传输层包含TCP和IP两种协议。() A.√ B.× 3.我们平时所用到的WiFi协议是属于TCP/IP体系结构中的物理层。() A.√ B.× 答案 DBB 思考题 你们听到或见到过的协议哪些? 大家听到或见到...
  • 华三一面面试经验分享

    千次阅读 2015-10-24 18:09:35
    3、网络四模型、以及各包含哪些协议,比如路由器在哪个、网卡在哪 4、tcp与udp的区别 TCP可靠由什么包证SYN ACK和滑动窗口、以及超时重传机制 5、ARP,ip和mac地址进行映射,你会选择哪种数据结构

空空如也

空空如也

1 2 3 4
收藏数 76
精华内容 30
关键字:

ip层包含哪些协议