精华内容
下载资源
问答
  • 计算机网络协议——通信协议综述

    万次阅读 多人点赞 2019-09-03 23:20:58
    通信协议综述概述一、为什么学习网络协议1.1 常见的网络协议二、网络分层的真正含义2.1 为什么网络要分层?2.2 浏览点击请求过程2.3 揭秘层与层之间的关系三、ifconfig 命令行的由来3.1 ip地址3.2 无类型域间选路...

    这个专栏的计算机网络协议,我是在极客时间上学习 已经有三万多人购买的刘超老师趣谈网络协议专栏,讲的特别好,像看小说一样学习到了平时很枯燥的知识点,计算机网络的书籍太枯燥,感兴趣的同学可以去付费购买,绝对物超所值,本文就是对自己学习专栏的总结,评论区可以留下你的问题,咱们一起讨论!


    概述

    本文也是根据专栏里的板块,对通信网络协议做一个综述,共分为四节去进行介绍;

    • 为什么学习网络协议?
    • 网络协议分层的真正含义;
    • ifconfig命令行的背后;
    • DHCP和PXE:ip的由来;

    一、为什么学习网络协议

    协议

    协议的三要素是:语法、语义、顺序
    连通互联网世界,只教给一台电脑做什么是不够的,需要教会一大片机器做什么,这就是网络协议。只有通过网络协议,才能够使得一大片机器互相协作、共同完成一件事。

    1.1 常见的网络协议

    采用一个下单购物的场景,看看整个过程运用了哪些网络协议。


    首先,在浏览器中输入一个网址www.taobao.com URL,浏览器只知道名字是www.taobao.com,但是不知道具体的地点,所以不知道该如何访问;

    于是,打开地址簿去查找,可以使用一般的地址簿DNS去查找,也可以采用更为精确的地址簿查找协议HTTPDNS

    无论哪一种查找,最后都会得到一个地址:106.114.134.24(任意赋值),这个是IP地址,相当于你在互联网世界中的“门牌号”。知道了目标地址,浏览器开始打包他们的请求。对于普通的浏览请求,往往会采用HTTP协议;但是对于购物的请求,往往需要进行加密传输,因而使用HTTPS协议。无论是什么协议,里面都会声明“你要买什么和买多少”。HTTP头中包含了请求的信息:

    HTTP
    DNS、HTTP、HTTPS所在的层为应用层;


    经过封装以后,浏览器会将应用层的包交给下一层去完成,然后通过socket编程来实现。下一层是传输层,传输层有两种协议:

    • 无连接的协议UDP
    • 面向连接的协议TCP

    对于支付来说,往往采用TCP协议,所谓的面向连接就是,TCP会保证这个包能够到达目的地。如果不能到达,就会重新发送,直至到达;TCP协议中有两个端口,一个是浏览器监听的端口,一个是电商服务器监听的端口。操作系统往往通过端口来判断,它得到的包应该给哪个进程;
    TCP协议


    传输层封装完之后,浏览器会将包交给操作系统的网络层。网络层的协议是IP协议,在IP协议里面会有源IP地址,即浏览器的所在的机器的IP地址和目标IP地址,也就是电商所在的IP地址
    IP地址
    目标IP就是电商地址的门牌号,操作系统知道了目的地的门牌号,就要想着该如何找到目的地;

    首先先判断,目的地是在本地还是在外地;电商系统一般都在那遥远的地方,就比如你到国外要去海关一样,去外地就要经过网关。操作系统启动以后,就会被DHCP协议配置IP地址,以及默认的网关IP地址192.168.1.1;

    如果是本地通信就是靠吼——ARP协议,操作系统大吼一声,谁是192.168.1.1啊?网关会回答它,我就是。这个本地地址就是MAC地址,吼靠的就是ARP协议;

    IP包

    于是操作系统将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的包,会像来的时候一样,经过千难万险到达你的个人电脑,最终进入浏览器,显示支付成功;

    看到这里相信你对于自己之前学过的计算机网络知识有一个连串的感觉了吧,很多公司的面试题都会问在浏览器中输入一个URL的整个过程? 把这一连串说完,相信你的面试官也会觉得你学的很扎实;
    网络协议

    二、网络分层的真正含义

    计算机网络知识点需要背诵,但是更是要理解透彻;

    2.1 为什么网络要分层?

    因为不同层次之间有不同的沟通方式,叫做协议。就像一家公司也是分“层次”,分为总经理、经理、组长、员工,每个人之间都有不同的沟通方式;

    因为复杂的程序都要分层,想象网络包就是一段Buffer,或者一块内存,是有格式的。同时,想象自己是一个处理网络包的程序,而且这个程序可以跑在电脑上,可以跑在服务器上,可以跑在交换机上,也可以跑在路由器上。你想象自己有很多的网口,从某个口拿进一个网络包来,用自己的程序处理一下,再从另一个网口发送出去;

    当然网络包的格式很复杂,这个程序也很复杂,复杂的程序都要分层,这是程序设计的要求。

    2.2 浏览点击请求过程

    浏览点击请求过程如下所示:
    在这里插入图片描述
    在这里插入图片描述
    假设你发现这个包的MAC地址和你的相符,那说明就是发给你的,于是需要调用process_layer3(buffer):这个时候,Buffer里面往往就没有二层的头了,因为已经在上一个函数的处理过程中拿掉了,或者将开始的偏移量移动了一下。在这个函数里面,摘掉三层的头,看看到底是发送给自己的,还是希望自己转发出去的;

    如果IP地址不是自己的,那就应该转发出去;如果IP地址是自己的,那就是发给自己的。根据IP头里面的标识,拿掉三层的头,进行下一层的处理,到底是调用process_tcp(buffer)呢,还是调用process_udp(buffer)呢?

    假设地址是TCP,就会调用process_tcp(Buffer)。这时候,Buffer里面没有三层的头,就需要查看四层的头,看这是一个发起,还是一个应答,又或者是一个正常的数据包,然后分别由不同的逻辑进行处理。如果是发起或者应答,接下来可能要发送一个回复包;如果是一个正常的数据包,就需要交给上层了。交给谁呢?是不是有**process_http(buffer)**函数呢?

    如果你是一个网络包处理程序,你不需要有process_http(buffer),而是应该交给应用去处理。交给哪个应用呢?在四层的头里面有端口号,不同的应用监听不同的端口号。如果发现浏览器应用在监听这个端口,那你发给浏览器就行了。至于浏览器怎么处理,和你没有关系;

    浏览器是解析HTML,显示出页面来。当你再次点击鼠标,点击动作被浏览器捕获,于是浏览器知道又会发起另一个HTTP请求了,于是使用端口号,将请求发送给你。

    你应该调用send_tcp(buffer)。不用说,Buffer里面就是HTTP请求的内容。这个函数里面加一个TCP的头,记录下源端口号。浏览器会给你目的端口号,一般为80端口;

    然后调用send_layer3(buffer)。Buffer里面已经有了HTTP的头和内容,以及TCP的头。在这个函数里面加一个IP的头,记录下源IP的地址和目标IP的地址;随后调用send_layer2(buffer),**Buffer里面已经有了HTTP的头和内容、TCP的头,以及IP的头。这个函数里面要加一下MAC的头,记录下源MAC地址,得到的就是本机器的MAC地址和目标的MAC地址。**不过,这个还要看当前知道不知道,知道就直接加上;不知道的话,就要通过一定的协议处理过程,找到MAC地址。反正要填一个,不能空着;

    2.3 揭秘层与层之间的关系

    现实生活中,往往是员工说一句,组长补充两句,然后经理补充两句,最后总经理再补充两句。但是在网络世界,应该是总经理说话,经理补充两句,组长补充两句,员工再补充两句。

    TCP在三次握手时,TCP每一个消息都会带着IP层和MAC层。因为,TCP每次发送一个消息,IP层和MAC层的所有机制都要重新运行一次,所以TCP在三次握手时,IP和MAC也运行了好久。

    只要是在网络上跑的包,都是完整的。可以有下层没上层,绝对不可能有上层没下层;如果一个HTTP协议的包跑在网络上,它一定是完整的。无论这个包经过哪些设备,它都是完整的。所谓的二层设备、三层设备只是跑在设备上的程序不同;

    • 二层设备:只把MAC头摘下来,看看到底是丢弃、转发,还是自己留着;
    • 三层设备:把MAC头摘下来之后,再把IP头摘下来,看看到底是丢弃、转发,还是自己留着;

    三、ifconfig 命令行的由来

    ifconfig是linux系统中查询ip地址的一个命令,windows是ipconfig;

    3.1 ip地址

    IP地址是一个网卡在网络世界的通讯地址,相当于我们现实世界的门牌号。
    例如:10.100.122.2就是一个IP地址,地址被分为四个部分,每个部分8个bit,所以IP地址总共是32位;

    IP地址被分成了5类,A-E类
    IP地址
    在网络地址中,A、B、C类主要分为两个部分,前一部分是网络号,后一部分是主机号。大家都是六单元1001号,你是小区A的,我是小区B的;

    ip地址范围

    3.2 无类型域间选路(CIDR)

    无类型域间选路,简称CIDR,将IP地址一分为二,前面是网络号,后面是主机号。10.100.122.2/24,这个IP地址中有一个斜杠,斜杠后面有个数字24,这种地址表示形式,就是CIDR,后面24的意思是,32位中,前24位是网络号,后8位是主机号。

    伴随着CIDR存在的,一个是广播地址,10.100.122.125,如果发送这个地址,所有10.100.122网络内的机器都可以收到,另一个是子网掩码,255.255.255.0

    将子网掩码和IP地址按位计算AND,就可以得到网络号,那么上面的ip地址与子网掩码按位取AND,网络号就是10.100.122.0;(1和任意数值取AND,值不变;0和任意数值取AND,即为0);

    3.3 公有IP地址和私有IP地址

    在这里插入图片描述
    平时我们在办公室、学校、家里的IP地址,一般都是私有IP地址,因为这些地址,允许组织内部的IP地址自己管理、自己分配,因此可以重复。就比如你们学校可能由六单元一号,我们学校可能也有六单元1号。

    但是,一旦离开学校就需要使用公有IP地址,就像上海市南京西路88号,这个是国家同统一分配的。公有IP地址,由相关的组织去分配,如果使用,需要购买。

    192.168.0.x,是最常见的私有IP地址,家里有wifi,对应就有一个ip地址,但是一般家庭中的上网设备不会超过256个,所以/24基本就够用了。

    举例:CIDR中容易犯错的点
    16.158.165.91/22,这个CIDR,求网络中的第一个地址、子网掩码和广播地址
    16.158的部分不会动,它占了前16位。中间的165,变为二进制为‭10100101‬。除了前面的16位,还剩6位。所以,这8位中前6位是网络号,16.158.<101001>,而**<01>.91是机器号**;所以第一个地址是16.158.<101001><00>.1,即16.158.164.1,子网掩码是255.255.<111111><00>.0,即255.255.252.0,广播地址是16.158.<101001><11>.255,即16.158.167.255.

    这五类地址中,还有一类D类是组播地址,使用这一类地址,属于某个组的机器都能够收到,这就有点类似于公司中大家加入了一个邮件组,发送邮件,加入这个组的大家都能收到;

    IP地址的后面有个scope对于eth0这张网卡来讲,是global,说明这张网卡是可以对外的,可以接收来自各个地方的包。对于lo来讲,是host,说明这张网卡仅仅可以供本机相互通信;

    lo又被称为loopback,又称环回接口,往往会被分配到127.0.0.1这个地址,这个地址可以用于本机通信,经过内核处理以后直接返回,不会在任何网络中出现;

    3.4 MAC地址

    在IP地址的上一行是link/ether fa:16:3e:c7:79:75 brd ff:ff:ff:ff:ff:ff,这个被称为MAC地址,是一个网卡的物理地址,用十六进制,6个byte表示。既然已经知道了MAC地址,是不是意味着直接可以通过MAC地址进行通信啊?

    个网络包要从一个地方传到另一个地方,除了要有确定的地址,还需要有定位功能。 而有门牌号码属性的IP地址,才是有远程定位功能的。

    比如:你要去某某大学某某学院找小明,你在路上问,有些人不知道某某学院,但是可以给你说某某学校在哪里,但是你直接根据 小明的身份证号 问别人知不知道他在哪个学院,那么肯定没人知道;

    MAC地址更像是身份证,是一个唯一的标识。它的唯一性设计是为了组网的时候,不同的网卡放在一个网络里面的时候,可以不用担心冲突。从硬件角度,保证不同的网卡有不同的标识

    MAC地址是有一定的定位功能的,你可以根据ip地址找到某某学校某某学院某号楼某个实验室,当你到了以后,大吼一声,小明 是哪位,那么他听到了 就会回应你;

    MAC地址的通信范围比较小,局限在一个子网里面。例如,从192.168.0.2/24访问192.168.0.3/24是可以用MAC地址的。一旦跨子网,即从192.168.0.2/24到192.168.1.2/24,MAC地址就不行了,需要IP地址起作用了

    总结:

    • ip是地址,有定位功能;MAC是身份证,无定位功能;
    • CIDR可以用来判断是不是本地人;
    • IP分为公有地址IP和私有地址IP

    四、DHCP和PXE:ip的由来

    只要是在网络上跑的包可以有下层没上层,但是不可以有上层没下层;当一个数据包有自己的ip地址,有目的地的ip地址,但是包发不出去的原因是因为,MAC层还没有填写。

    Linux的默认逻辑是,如果是一个跨网段的调用,它便不会将包直接发送到网络上,而是企图将包发送到网关。网关要和当前的网络至少一个网卡是同一个网段;

    4.1 动态主机配置协议(DHCP)

    动态主机配置协议(Dynamic Host Configuration Protocol),简称DHCP

    有了这个协议,网络管理员就轻松多了。他只需要配置一段共享的IP地址。每一台新接入的机器都通过DHCP协议,来这个共享的IP地址里申请,然后自动配置好就可以了。等人走了,或者用完了,还回去,这样其他的机器也能用。

    如果是数据中心里面的服务器,IP一旦配置好,基本不会变,这就相当于买房自己装修。DHCP的方式就相当于租房。你不用装修,都是帮你配置好的。你暂时用一下,用完退租就可以了。

    4.2 解析DHCP的工作方式

    当一台机器加入一个新的网络的时候,只知道自己的mac地址,先吼一句,有人吗?这一步就是DHCP Discover

    新来的机器使用IP地址0.0.0.0发送了一个广播包,目的IP地址为255.255.255.255。广播包封装了UDP,UDP封装了BOOTP。其实DHCP是BOOTP的增强版,但是如果你去抓包的话,很可能看到的名称还是BOOTP协议;

    在这个广播包里,新人喊一句:我是新来的(Boot request),我的MAC地址是多少,但是我还没有ip地址,谁能给我一个?
    在这里插入图片描述
    网络管理员在网络配置了DHCP server,就相当于IP管理员,MAC地址是其唯一的身份。只有MAC地址唯一,IP管理员才能知道这是一个新人,需要租给它一个新的IP地址,这个过程就是DHCP Offer.

    DHCP Offer格式如下:
    里面会有给新人分配的地址;
    DHCP Offer
    DHCP Server仍然使用广播地址作为目的地址。如果同时收到多个IP地址,那么会选择最先到达的DHCP Offer,并且会向网络发送一个DHCP Request广播数据包,其中包含客户端的MAC地址、接受的租约中的IP地址,提供租约的DHCP服务器地址等,并且告诉所有的DHCP Offer,它将接受哪一台服务器所提供的IP地址,感谢其他DHCP服务器,并且请求撤销他们提供的ip地址,以便提供给下一个租用者。

    在这里插入图片描述
    由于还没有收到DHCP server的最后确认,客户端依然使用自己的源ip地址0.0.0.0、255.255.255.255为目标地址进行广播。在BOOTP里面,接受某个DHCP Server的分配 ip;

    当DHCP Server接收到客户机的DHCP request之后,会广播返回给客户机的一个DHCP ACK消息包,表明已经接受客户机的选择,并且将这一IP地址合法租用信息和其他的配置信息都放到该广播包中,发送给客户机,欢迎它加入网络大家庭;

    在这里插入图片描述
    租约达成以后,还是要广播一下,让大家都知道呢

    ip地址的收回和续租

    如果需要续租的话,需要提前租期的50%,客户机会在租期过去50%的时候,直接向为其提供ip地址的DHCP Server发送DHCP Request消息包,客户机收到该服务器的DHCP ACK消息包之后,会根据包中提供的新的租期,以及其他的已经更新的TCP/IP参数更新自己的配置,这样,ip的租用更新就已经完成了。

    网络管理员不仅能自动分配IP地址,还能帮你自动安装操作系统;

    4.3 预启动执行环境(PXE)

    普通的笔记本一般不会有这种雪球,已经预装好了操作系统。但是数据中心的管理员,可能一下子拿到了几百台空的机器,一台一台装就累死了。

    管理员们不仅希望可以分配好ip地址,还可以自动安装系统,装好系统之后会自动分配IP地址,直接启动最好了。

    安装操作系统的过程,只能插在BIOS启动之后了。因为没安装系统之前,连启动扇区都没有。因而这个过程叫做预启动执行环境(Pre-boot Execution Environment),简称PXE。

    默认的DHCP Server是需要配置的,无非是我们配置IP的时候所需要的IP地址段、子网掩码、网关地址、租期等。如果想使用PXE,则需要配置next-server,指向PXE服务器的地址,另外要配置初始启动文件filename。

    这样PXE客户端启动之后,发送DHCP请求之后,除了能得到一个IP地址,还可以知道PXE服务器在哪里,也可以知道如何从PXE服务器上下载某个文件,去初始化操作系统。

    解析PXE的工作过程

    首先是启动PXE客户端第一步是通过DHCP协议告诉DHCP Server,我啥都没有,DHCP Server便租给它一个ip地址,同时给他PXE服务器的地址、启动文件pexlinux.0;

    其次,PXE客户端知道要去PXE服务器下载这个文件后,就可以初始化机器。于是便开始下载,下载的时候使用的是TFTP协议。所以PXE服务器上,往往还需要有一个TFTP服务器。PXE客户端向TFTP服务器请求下载这个文件,TFTP服务器说好啊,于是就将这个文件传给它;

    然后,PXE客户端收到这个文件后,就开始执行这个文件。这个文件会指示PXE客户端,向TFTP服务器请求计算机的配置信息pxelinux.cfg。TFTP服务器会给PXE客户端一个配置文件,里面会说内核在哪里、initramfs在哪里。PXE客户端会请求这些文件;

    最后,启动Linux内核,一旦启动了操作系统,啥都好办。

    在这里插入图片描述

    总结


    本文是对通信协议综述的总结,共分为四节去介绍:

    1. 为什么学习网络协议?
      通过一个简简单单的下单过程,中间牵扯到这么多的协议,展开介绍;

    2. 网络协议分层的真正含义
      始终想象自己是一个处理网络包的程序:如何拿到网络包,如何根据规则进行处理,如何发出去;
      始终牢记一个原则:只要是在网络上跑的包,都是完整的。可以有下层没上层,绝对不可能有上层没下层;

    3. ifconfig命令行的背后;
      IP是地址,有定位功能;MAC是身份证,无定位功能;
      CIDR可以用来判断是不是本地人;
      IP分公有的IP和私有的IP。后面的章节中我会谈到“出国门”,就与这个有关。

    4. DHCP和PXE:ip的由来;
      DHCP协议主要是用来给客户租用IP地址,和房产中介很像,要商谈、签约、续租,广播还不能“抢单”;
      DHCP协议能给客户推荐“装修队”PXE,能够安装操作系统,这个在云计算领域大有用处;

    展开全文
  • 网络层安全协议 IP 安全性很差: 没有为通信提供良好的数据源鉴别机制; 没有为数据提供强大的完整性保护机制; 没有为数据提供任何机密性保护; 在设计和实现存在安全漏洞,使各种攻击有机可乘。例如:攻击者...

    网络层安全协议

    • IP 安全性很差:
    1. 没有为通信提供良好的数据源鉴别机制;
    2. 没有为数据提供强大的完整性保护机制;
    3. 没有为数据提供任何机密性保护;
    4. 在设计和实现上存在安全漏洞,使各种攻击有机可乘。例如:攻击者很容易构造一个包含虚假地址的 IP 数据报。
    • IP 几乎不具备任何安全性,不能保证
    1. 数据机密性
    2. 数据完整性
    3. 数据来源认证
    • 由于其在设计和实现上存在安全漏洞,使各种攻击有机可乘。例如:攻击者很容易构造一个包含虚假地址的 IP 数据报。
    • IPsec 提供了标准、健壮且包含广泛的机制保证 IP 层安全。

    1. IPsec 协议

    • IPsec 就是“IP 安全 (security)”的缩写。
    • IPsec 并不是一个单个的协议,而是能够在 IP 层提供互联网通信安全的协议族
    • IPsec 是个框架,它允许通信双方选择合适的算法和参数(例如,密钥长度)。
    • 为保证互操作性,IPsec 还包含了所有 IPsec 的实现都必须有的一套加密算法。
    IPsec 由三部分组成
    • IP 安全数据报格式的两个协议
      • 鉴别首部 AH (Authentication Header) 协议
      • 封装安全有效载荷 ESP (Encapsulation Security Payload) 协议
    • 有关加密算法的三个协议(在此不讨论)
    • 互联网密钥交换 IKE (Internet Key Exchange) 协议
    • AH 协议提供源点鉴别和数据完整性,但不能保密。
    • ESP 协议比 AH 协议复杂得多,它提供源点鉴别、数据完整性和保密。
    • 使用 ESP 或 AH 协议的 IP 数据报称为 IP 安全数据报(或 IPsec数据报)。
    • Ipsec 支持 IPv4 和 IPv6。
    • AH 协议的功能都已包含在 ESP 协议中。
    IP 安全数据报有两种工作方式

    运输方式 (transport mode)

    • 整个运输层报文段的前后分别添加若干控制信息,再加上 IP 首部,构成 IP 安全数据报。
    • 适合于主机到主机之间的安全传送。
    • 需要使用 IPsec 的主机都运行 IPsec 协议。

    在这里插入图片描述
    隧道方式 (tunnel mode)

    • 在原始的 IP 数据报的前后分别添加若干控制信息,再加上新的 IP 首部,构成一个 IP 安全数据报。
    • 需要在 IPsec 数据报所经过的所有路由器上都运行 IPsec 协议。
    • 隧道方式常用来实现虚拟专用网 VPN。
      在这里插入图片描述
      无论使用哪种方式,最后得出的 IP 安全数据报的 IP 首部都是不加密的。
      所谓“安全数据报”是指数据报的数据部分是经过加密的,并能够被鉴别的。
      通常把数据报的数据部分称为数据报的有效载荷 (payload)。
    安全关联 SA
    • 在发送 IP 安全数据报之前,在源实体和目的实体之间必须创建一条网络层的逻辑连接。此逻辑连接叫做安全关联 SA (Security Association) 。
    • IPsec 就把传统互联网无连接的网络层转换为具有逻辑连接的网络层。
    安全关联的特点
    • 安全关联是从源点到终点的单向连接,它能够提供安全服务。
    • 在安全关联 SA 上传送的就是 IP 安全数据报。
    • 如要进行双向安全通信,则两个方向都需要建立安全关联
    • 若 n 个员工进行双向安全通信,一共需要创建 (2 + 2n ) 条安全关联 SA。
    路由器 R1 到 R2 的安全关联 SA

    假定公司总部的主机 H1 要和分公司的主机 H2 通过互联网进行安全通信。公司总部与分公司之间的安全关联 SA 就是在路由器 R1 和 R2 之间建立的。
    在这里插入图片描述

    主机 H1 到 H3 之间的通信

    假定公司总部的主机 H1 要和内部的主机 H3 进行通信。由于都在公司内部,不需要加密,因此不需要建立安全关联。
    在这里插入图片描述

    路由器 R1 到主机 H2 的安全关联 SA

    若公司总部的主机 H1 要和某外地业务员的主机 H2 进行安全通信,需要在公司总部的路由器 R1 和外地业务员的主机 H2 建立安全关联 SA。
    在这里插入图片描述

    安全关联 SA 状态信息
    1. 一个 32 位的连接标识符,称为安全参数索引 SPI (Security Parameter Index)。
    2. 安全关联 SA 的源点和终点的 IP 地址(例如路由器 R1 和 R2 的 IP 地址)。
    3. 所使用的加密类型(例如,DES 或 AES)。
    4. 加密的密钥。
    5. 完整性检查的类型(例如,使用报文摘要 MD5 或 SHA-1 的报文鉴别码 MAC)。
    6. 鉴别使用的密钥。

    2. IP 安全数据报的格式

    隧道方式下的 IP 安全数据报的格式
    在这里插入图片描述
    注意:

    • 在“原始的 IP 首部”中,用主机 H1 和 H2 的 IP 地址分别作为源地址和目的地址。
    • 而在 IP 安全数据报的“新的 IP 首部”中,用路由器 R1 和 R2 的 IP 地址分别作为源地址和目的地址。

    3. IPsec 的其他构件

    • 安全关联数据库 SAD (Security Association Database)
      • 存放SA。
    • 安全策略数据库 SPD (Security Policy Database)
      • 指明什么样的数据报需要进行 IPsec 处理。
    • 互联网密钥交换 IKE (Internet Key Exchange)
      • 为 IP 安全数据报创建安全关联 SA。

    互联网密钥交换 IKE

    • IKE 是个非常复杂的协议,在 2014 年 10 月已成为互联网的正式标准 [RFC 7296]。
    • 以另外三个协议为基础:
    1. Oakley —— 是密钥生成协议 [RFC 2412]。
    2. 安全密钥交换机制 SKEME (Secure Key Exchange Mechanism) —— 是用于密钥交换的协议。它利用公钥加密来实现密钥交换协议中的实体鉴别。
    3. 互联网安全关联和密钥管理协议 ISAKMP (Internet Secure Association and Key Management Mechanism) —— 用于实现IKE中定义的密钥交换,使IKE的交换能够以标准化、格式化的报文创建安全关联 SA。

    运输层安全协议

    现在广泛使用的有以下两个协议:

    • 安全套接字层 SSL (Secure Socket Layer)
    • 运输层安全 TLS (Transport Layer Security)

    SSL 和 TLS

    • 安全套接层 SSL 由 Netscape 于 1994 年开发,广泛应用于基于万维网的各种网络应用(但不限于万维网应用)。
    • SSL 作用在端系统应用层的 HTTP 和运输层之间,在 TCP 之上建立起一个安全通道,为通过 TCP 传输的应用层数据提供安全保障。
    • 1996 年发布 SSL 3.0,成为 Web 安全的事实标准。
    • 1999 年,IETF 在 SSL 3.0 基础上推出了传输层安全标准 TLS,为所有基于 TCP 的网络应用提供安全数据传输服务。
    SSL / TLS 的位置

    在发送方,SSL 接收应用层的数据,对数据进行加密,然后把加了密的数据送往 TCP 套接字。在接收方,SSL 从 TCP 套接字读取数据,解密后把数据交给应用层。
    在这里插入图片描述

    运输层不使用安全协议和使用安全协议的对比

    在这里插入图片描述

    • SSL / TLS 建立在可靠的 TCP 之上,与应用层协议独立无关。
    • SSL / TLS 已被所有常用的浏览器和万维网服务器所支持。
    • SSL / TLS 基本目标:实现两个应用实体之间的安全可靠通信。
    • 应用层使用 SSL 最多的就是 HTTP,但 SSL 并非仅用于 HTTP,而是可用于任何应用层的协议。
    • 应用程序 HTTP 调用 SSL 对整个网页进行加密时,网页上会提示用户,在网址栏原来显示 http 的地方,现在变成了 https。在 http 后面加上的 s 代表 security,表明现在使用的是提供安全服务的 HTTP 协议(TCP 的 HTTPS 端口号是 443,而不是平时使用的端口号 80)。

    SSL 提供的安全服务

    • SSL 服务器鉴别,允许用户证实服务器的身份。支持 SSL 的客户端 通过验证来自服务器的证书,来鉴别服务器的真实身份并获得服务 器的公钥。
    • SSL 客户鉴别,SSL 的可选安全服务,允许服务器证实客户的身份。
    • 加密的 SSL 会话,对客户和服务器间发送的所有报文进行加密,并 检测报文是否被篡改。

    SSL 安全会话建立过程

    在这里插入图片描述

    1. 协商加密算法。 ① 浏览器 A 向服务器 B 发送浏览器的 SSL 版本号和一些可选的加密算法。 ② B 从中选定自己所支持的算法(如 RSA),并告知 A。
    2. 服务器鉴别。 ③ 服务器 B 向浏览器 A 发送包含其 RSA 公钥的数字证书。 ④ A 使用该证书的认证机构 CA 公开发布的RSA公钥对该证书进行验证。
    3. 会话密钥计算。由浏览器 A 随机产生一个秘密数。 ⑤ 用服务器 B 的 RSA 公钥进行加密后发送给 B。 ⑥ 双方根据协商的算法产生共享的对称会话密钥。
    4. 安全数据传输。 ⑦ 双方用会话密钥加密和解密它们之间传送的数据并验证其完整性。
    展开全文
  • 计算机网络(一)-互联网协议

    千次阅读 2018-09-09 20:16:19
    互联网协议   互联网是如何实现的? 全世界几十亿台电脑,连接在一起,两两通信。上海的某一块网卡送出信号,洛杉矶的另一块网卡居然就收到了,两者实际根本不知道对方的物理位置,你不觉得这是很神奇的事情吗...

    互联网协议

     

    互联网是如何实现的?

    全世界几十亿台电脑,连接在一起,两两通信。上海的某一块网卡送出信号,洛杉矶的另一块网卡居然就收到了,两者实际上根本不知道对方的物理位置,你不觉得这是很神奇的事情吗?

    互联网的核心是一系列协议,总称为"互联网协议"(Internet Protocol Suite)。

    对电脑如何连接和组网,做出了详尽的规定。理解了这些协议,就理解了互联网的原理。

     

    网络协议:为进行网络中的数据交换而建立的规则、标准或约定

    网络协议的组成要素:

    1语法:数据和控制信息的结构或者格式

    2语义:需要发出何种控制信息,完成何种动作以及做出何种应答

    3同步:事件实现顺序的详细说明

     

    计算机网络体系结构:计算机网络的各层及其各层协议的集合

    计算机网络体系结构

    OSI:开放系统互联基本参考模型,Open Systems Interconnection Reference Model

    协议:为了进行网络中的数据交换而建立的规则、标准或约定称为网络协议。

    分层带来的好处:

    1、各层独立,将大问题分解成多个独立的小问题

    2、灵活性好,只要保证接口不变,内部实现可以修改并不影响上下层

    3、结构上易于分开

    4、易于实现与维护

    5、促进标准化工作

     

    ISO定义的开放互联(OSI)模型

    定义了网络互联7层结构,OSI定义了各层提供的服务,服务与实现无关。

    1.物理层:

    定义了为建立、维护和拆除物理链路所需的机械的、电气的、功能的和规程的特性,

    其作用是使原始的数据比特流能在物理媒体上传输。具体涉及接插件的规格、“0”、“1”信号的电平表示、收发双方的协调等内容。

    利用物理传输介质为数据链路层提供物理连接,透明地传输比特率。实现介质访问控制。

    物理介质双绞线、同轴电缆、光缆等。

    2.数据链路层:传输数据单位是

    比特流被组织成数据链路协议数据单元(通常称为帧),并以其为单位进行传输,帧中包含地址、控制、数据及校验码等信息。数据链路层的主要作用是通过校验、确认和反馈重发等手段,将不可靠的物理链路改造成对网络层来说无差错的数据链路。数据链路层还要协调收发双方的数据传输速率,即进行流量控制,以防止接收方因来不及处理发送方来的高速数据而导致缓冲器溢出及线路阻。

    在通信的实体之间建立数据链路连接,传送以“帧”为单位的数据,采用差错控制、流量控制方法,使有差错的物理链路编程无差错的数据链路。

    3.网络层:传输数据单位是分组或包

    网络层----数据以网络协议数据单元(分组)为单位进行传输。网络层关心的是通信子网的运行控制,主要解决如何使数据分组跨越通信子网从源传送到目的地的问题,这就需要在通信子网中进行路由选择。另外,为避免通信子网

    中出现过多的分组而造成网络阻塞,需要对流入的分组数量进行控制。当分组要跨越多个通信子网才能到达目的地时,还要解决网际互连的问题。

    通过路由算法,为分组通过通信子网选择一条最佳路径,网络层要实现路由选择、拥塞控制和网络互联

    4.传输层:传输数据单位是报文

    传输层----是第一个端--端,也即主机--主机的层次。传输层提供的端到端的透明数据运输服务,使高层用户不必关心通信子网的存在,由此用统一的运输原语书写的高层软件便可运行于任何通信子网上。传输层还要处理端到端的差错控制和流量控制问题

    向用户提供可靠的端到端服务,透明地传送报文,向高层屏蔽了下层数据通信的细节。负责主机中两个程序之间的通信

    5.会话层:

    会话层----是进程--进程的层次,其主要功能是组织和同步不同的主机上各种进程间的通信(也称为对话)。会话层负责在两个会话层实体之间进行对话连接的建立和拆除。在半双工情况下,会话层提供一种数据权标来控制某一方何时有权发送数据。会话层还提供在数据流中插入同步点的机制,使得数据传输因网络故障而中断后,可以不必从头开始而仅重传最近一个同步点以后的数据。

    组织两个会话进程之间的通信,并管理数据的交换,建立传输错误纠正与保证数据完整性的控制机制。

    6.表示层:

    表示层----为上层用户提供共同的数据或信息的语法表示变换。为了让采用不同编码方法的计算机在通信中能相互理解数据的内容,可以采用抽象的标准方法来定义数据结构,并采用标准的编码表示形式。表示层管理这些抽象的数据结构,并将计算机内部的表示形式转换成网络通信中采用的标准表示形式。

    数据压缩和加密也是表示层可提供的表示变换功能

    主要解决用户数据的语法表示问题。处理在两个通信系统汇总交换信息的表示方式。数据格式变换,数据加密与解密,数据压缩和恢复功能

    7.应用层:

    应用层是开放系统互连环境的最高层。不同的应用层为特定类型的网络应用提供访问 OSI环境的手段。网络环境下不同主机间的文件传送访问和管理(FTAM)、传送标准电子邮件的文电处理系统(MHS)、使不同类型的终端和主机通过网络交互访问的虚拟终端(VT)协议等都属于应用层的范畴。

    为应用程序提供了网络服务,应用层需要识别并保证通信对方的可用性,使得协同工作的应用程序之间的同步,建立传输错误纠正与保证数据完整性的控制机制。

    应用层提供的是特殊的网络应用服务,如邮件服务、文件传输服务等

     

    dns实现域名解析,定义各种网络服务

     

    通信子网实际上由物理层、数据链路层和网络层这三个层次构成

     

    TCP/IP体系结构:

    TCP/IP协议簇分为四个层次,分别是应用层、运输层、网际层和网络接口层

    应用层:是TCP/IP体系结构的最高层。在该层中有许多著名协议,如远程登录协议TELNET,文件传送协议FTP,简单邮件传送协议SMTP等

    运输层:是主机到主机的层次。该层使用两个不同的协议为网络用户提供服务,一个是面向连接的传输控制协议TCP,提供可靠的数据传输服务。另一个是无连接的的用户数据报协议UDP,提供尽最大努力交付服务。

    网际层:该层的主要协议是网际协议IP,也就是在该层实现了不同网络的互连,著名的IP地址就是IP协议的组成部分之一。与网际协议IP配合使用的还有三个协议:Internet控制报文协议ICMP,地址解析协议ARP和反向地址解析协议RARP。

     

    Q:与OSI相比,TCP/IP具有很多不同之处:

    • TCP/IP一开始就考虑到各种异构网络的互连问题,将网际协议IP作为TCP/IP的重要组成部分。但OSI制定时最初只考虑到全世界都使用一种统一的标准将各种不同的系统互连起来。
    • TCP/IP一开始就把面向连接服务和无连接服务并重,并在网际层使用无连接服务,但OSI在开始时各个层都采用面向连接服务,降低了效率。
    • TCP/IP在较早时就有了较好的网络管理功能,但OSI到后来才开始考虑。
    • TCP/IP的不足主要在于TCP/IP模型对“服务”、“协议”和“接口”等概念没有很清楚地区分开,TCP/IP模型的通用性较差。此外,TCP/IP但网络接口层严格来说并不是一个层次而仅仅是一个接口。

     

     

    五层结构(七层结构是在应用层下增加表示层与会话层,更多是一种理论的结构,实际多以五层结构表示)

    1、应用层

    2、传输层

    3、网络层

    4、数据链路层

    5、物理层

     

    一、互联网协议概述

    1.1 五层模型

    互联网的实现,分层。每一层都有自己的功能,每一层都靠下一层支持。

    用户接触到的,只是最上面的一层,没有感觉到下面的层。要理解互联网,必须从最下层开始,自下而上理解每一层的功能。

    如何分层有不同的模型,有的模型分七层,有的分四层。分成五层比较容易解释。

    "物理层"(Physical Layer),主要负责在物理线路上传输原始的二进制数据

    "数据链路(链接)层"(Link Layer)主要负责在通信的实体间建立数据链路连接

    "网络层"(Network Layer)主要负责创建逻辑链路,以及实现数据包的分片和重组,实现拥塞控制、网络互连等功能

    "传输层"(Transport Layer)负责向用户提供端到端的通信服务,实现流量控制以及差错控制

    "应用层"(Application Layer)为应用程序提供了网络服务

    越下面的层,越靠近硬件;越上面的层,越靠近用户。

    它们叫什么名字,其实并不重要。只需要知道,互联网分成若干层就可以了。

     

    1.2 层与协议

    每一层都是为了完成一种功能。为了实现这些功能,就需要遵守共同规则【"协议"(protocol)】。

    互联网的每一层都定义了很多协议。这些协议的总称叫做"互联网协议"(Internet Protocol Suite)。是互联网的核心。

    二、实体层(物理层)

    电脑要组网,第一件事要先把电脑连起来,可用光缆、电缆、双绞线、无线电波等方式

    这就叫做"实体层",就是把电脑连接起来的物理手段。主要规定了网络的一些电气特性,作用是负责传送0和1的电信号。

    物理层定义物理设备如何传输数据。就是电脑硬件,网卡,网线,光缆

     

    物理层的主要任务就是确定与传输媒体接口有关的一些特性,包括:

    1、机械特性

    2、电气特性

    3、功能特性

    4、过程特性

     

    信息交互方式

    1、单工通信:数据信号始终沿着一个方向传输,一方永远是发送方,另一方永远是接收方

    2、半双工通信:通信双方都可以发送(或接收)数据,但不能同时双向发送

    3、全双工通信:通信双方可以同时发送和接收信数据,即数据可以同时作双向传输

     

    串行传输和并行传输:

    串行传输采用的同步方式有两种:同步传输方式(固定的时钟街拍发送数据信号)和异步传输方式(每个字符在传输时都前后分别加上起始位和结束位,以表示一个字符的开始和结束)

    同步传输克服了异步传输方式中的每一个字符都要附加起止信号的缺点,具有较高的效率,但实现较为复杂,常用于高速数据传输

     

    信道复用技术

    为了有效地利用通信线路,就希望一个信道能同时传输多路信号,这就是所谓多路复用的概念。

    1、频分服用(FDM)——按照频率不同来区分信号的一种方法,用户在同样时间占用不同资源

    2、时分复用(TDM)——将一条线路的工作时间划分为一段段等长的时分复用帧(TDM帧),每一个TDM帧中再划分成若干时间片,每一个时分复用的用户在每个TDM帧中占用固定序号的时间片,来使用公共线路。所用用户在不同时间占用相同资源【统计复用又称为异步时分复用,普通的时分复用称为同步时分复用】

    3、波分复用(WDM)——光的频分复用

    4、码分复用

     

    三、链接层(数据链路层)

    单纯的0和1没有任何意义,必须规定解读方式:多少个电信号算一组?每个信号位有何意义?这就是"链接层"的功能,在"实体层"的上方,确定了0和1的分组方式

    数据链路层在通信的实体间建立数据链路连接。电脑之间0101的传输

    3.2 以太网协议

    早期,每家公司都有自己的电信号分组方式。一种叫做"以太网"(Ethernet)的协议,占据了主导地位。

    以太网规定,一组电信号构成一个数据包,叫做"帧"(Frame)。每一帧分成两个部分:标头(Head)和数据(Data)。

    "标头"包含数据包的一些说明项,比如发送者、接受者、数据类型等等;"数据"则是数据包的具体内容。

    "标头"的长度固定为18字节。"数据"的长度,最短46字节,最长为1500字节

    因此,整个"帧"最短为64字节,最长为1518字节。如果数据很长,就必须分割成多个帧进行发送

    3.3 MAC地址

    以太网数据包的"标头",包含了发送者和接受者的信息。

    发送者和接受者是如何标识呢?

    以太网规定,连入网络的所有设备,都必有"网卡"接口。数据包必须是从一块网卡,传送到另一块网卡

    MAC网卡地址:数据包的发送地址和接收地址。

    每块网卡出厂的时候,都有唯一的MAC地址,长度是48个二进制位,通常用12个十六进制数表示。

    前6个十六进制数是厂商编号,后6个是该厂商的网卡流水号。有MAC地址,就可以定位网卡和数据包的路径了。

     

    3.4 广播

    Q:一块网卡怎么会知道另一块网卡的MAC地址?

    有一种ARP协议,可以解决这个问题。以太网数据包必须知道接收方的MAC地址,然后才能发送。

     

    Q:有MAC地址,系统怎样才能把数据包准确送到接收方?

    以太网采用了一种很"原始"的方式,它不是把数据包准确送到接收方,而是向本网络内所有计算机发送,让每台计算机自己判断,是否为接收方。

    1号计算机向2号计算机发送一个数据包,同一个子网络的3号、4号、5号计算机都会收到这个包。它们读取这个包的"标头",找到接收方的MAC地址,然后与自身的MAC地址相比较,如果两者相同,就接受这个包,做进一步处理,否则就丢弃这个包。这种发送方式就叫做"广播"(broadcasting)

    有了数据包的定义、网卡的MAC地址、广播的发送方式,"链接层"就可以在多台计算机之间传送数据了。

     

     

    数据链路:除了代表物理层的一条物理线路外,还包括一些控制数据传输的通信协议,二者结合起来就是数据链路

    网络适配器:数据链路层协议一般是由网络适配器实现的,它实现了数据链路层与物理层两层的功能。它的主要作用是实现计算机与外界局域网通信。

    数据链路层的协议数据单元:

    点对点的数据链路通信步骤(点对点的数据链路、使用广播信道的数据链路是两种主要的数据链路):

    1、节点A把该节点网络层交下来的IP数据报添加首部与尾部封装成帧

    2、节点A把封装好的帧通过物理层链路发送给节点B

    3、节点B在检查接收到的帧无差错时,上交给B节点的网络层,否则,丢弃此帧

    数据链路层协议要解决的三个基本问题:

    1、封装成帧——帧开始符SOH,结束符EOT

    2、透明传输——防止传输文本出现SOH或EOT,造成错误开始或错误结束

    3、差错检测——广泛使用CRC循环冗余检测

     

    P2P点对点协议是数据链路层使用最多的协议,他提供不可靠的数据报服务;因为数据链路层不必要提供比网络层IP协议更多的功能,所以PPP协议不需要纠错,不需要序号,不需要流量控制,简单就是PPP协议首要的要求与最大特点

     

    以太网:当今使用最广泛的局域网规范,使用CSMA/CD技术,并以10M/S的速率运行在各种电缆上

    CSMA/CD协议:载波监听多点接入/碰撞检测
    CSMA/CD核心要点:
    1、“多点接入”,许多计算机以多点接入方式互联到一条总线上,同一时刻只有一台计算机可以占用总线传输数据
    2、“载波监听”,每个站(计算机)都必须不停检测信道是否在传输数据,没有被占用才能获得发送权
    3、“碰撞检测”,边发送边监听,如果检测到有总线有两个站同时传输数据,立即停止传输
    MAC地址:以太网的物理地址

    网桥:可转发、过滤帧,可连接不同物理层、MAC子层与不同以太网,可在数据链路层扩展以太网,缺点是增加时延。

    集线器:可转发比特流,工作在物理层,在物理层扩展以太网

     

    四、网络层(建立主机到主机通信)

    网络层为数据在结点之间传输创建逻辑链路

    4.1 网络层的由来

    以太网协议,依靠MAC地址发送数据。

    理论上,单单依靠MAC地址,技术上可以实现通信。但有一个重大的缺点。广播效率太低了。

    以太网采用广播方式发送数据包,所有成员人手一"包",不仅效率低,而且局限在发送者所在的子网络

    如果两台计算机不在同一个子网络,广播是传不过去的。这种设计是合理的,否则互联网上每一台计算机都会收到所有包,那会引起灾难。

    互联网是无数子网络共同组成的一个巨型网络,上海和洛杉矶的电脑不可能会在同一个子网络

    因此,必须找到一种方法,能够区分哪些MAC地址属于同一个子网络,哪些不是。

    如果是同一个子网络,就采用广播方式发送,否则就采用"路由"方式发送。("路由"指如何向不同子网络分发数据包)

    MAC地址本身无法做到这一点。它只与厂商有关,与所处网络无关。

     

    这就导致了"网络层"的诞生。

    网络层的作用:引进一套新的地址,使得能够区分不同的计算机是否属于同一个子网络。这套地址叫做"网络地址"。

     

    "网络层"出现以后,每台计算机有了两种地址,一种是MAC地址,另一种是网络地址。两种地址之间没有任何联系,MAC地址是绑定在网卡上的,网络地址则是管理员分配的,它们只是随机组合在一起。

     

    网络地址帮助我们确定计算机所在的子网络,MAC地址则将数据包送到该子网络中的目标网卡。

    从逻辑上可以推断,必定是先处理网络地址,然后再处理MAC地址。

     

    4.2 IP协议

    IP协议:规定网络地址的协议。它所定义的地址,就被称为IP地址。

    目前,广泛采用的是IP协议第四版,简称IPv4。这个版本规定,网络地址由32个二进制位组成

    习惯上,用分成四段的十进制数表示IP地址,从0.0.0.0一直到255.255.255.255。

    IP地址分为网络部分主机部分,网络部分用子网掩码描述

    互联网上的每台计算机,都会分配到一个IP地址。这个地址分成两个部分,前一部分代表网络,后一部分代表主机

    如,IP地址172.16.254.1,一个32位的地址,假定网络部分是前24位(172.16.254),那主机部分就是后8位(最后的那个1)。处于同一个子网络的电脑,它们IP地址的网络部分必定是相同的,即172.16.254.2应该与172.16.254.1处在同一个子网络。

     

    单单从IP地址无法判断网络部分,这样就无法判断两台计算机是否属于同一个子网络。引入另一参数"子网掩码"(subnet mask)。

    "子网掩码":就是表示子网络特征的一个参数。在形式上等同于IP地址,也是一个32位二进制数字,它的网络部分全部为1主机部分全部为0

    知道"子网掩码",就能判断任意两个IP地址是否处在同一个子网络。将两个IP地址与子网掩码分别进行AND运算(两个数位都为1,运算结果为1,否则为0),然后比较结果是否相同,如果相同就表明它们在同一个子网络中,否则就不是。

     

    总结,IP协议的作用主要有两个,一个是为每一台计算机分配IP地址,另一个是确定哪些地址在同一个子网络。

     

    4.3 IP数据包

    IP数据包:根据IP协议发送的数据。其中必定包括IP地址信息。

    但是以太网数据包只包含MAC地址,并没有IP地址的栏位。那么是否需要修改数据定义,再添加一个栏位呢?

    回答是不需要,可以把IP数据包直接放进以太网数据包的"数据"部分,因此完全不用修改以太网的规格。这就是互联网分层结构的好处:上层的变动完全不涉及下层的结构

     

    具体来说,IP数据包也分为"标头"和"数据"两个部分。

    "标头"部分主要包括版本、长度、IP地址等信息,"数据"部分则是IP数据包的具体内容。

    它放进以太网数据包后,以太网数据包就变成了下面这样。

    4.4 ARP协议

    关于"网络层"

    因为IP数据包是放在以太网数据包里发送的,所以必须同时知道两个地址,一个是对方的MAC地址,另一个是对方的IP地址。通常情况,对方的IP地址是已知的,但是不知道它的MAC地址。

    所以,需要一种机制,能够从IP地址得到MAC地址

     

    分成两种情况:

    1.如果两台主机不在同一个子网络,事实上没有办法得到对方的MAC地址,只能把数据包传送到两个子网络连接处的"网关"(gateway),让网关去处理

    2.如果两台主机在同一个子网络用ARP协议得到对方的MAC地址

     

    ARP协议是发出一个数据包(包含在以太网数据包中),其中包含它所要查询主机的IP地址,在对方的MAC地址这一栏,填的是FF:FF:FF:FF:FF:FF,表示这是一个"广播"地址。它所在子网络的每一台主机,都会收到这个数据包,从中取出IP地址,与自身的IP地址进行比较。如果两者相同,都做出回复,向对方报告自己的MAC地址否则就丢弃这个包。

     

    有了ARP协议后,就可以得到同一个子网络内的主机MAC地址,可以把数据包发送到任意一台主机之上了。

     

     

     

    IP地址有关知识参看IP地址分类与子网掩码http://blog.csdn.net/zhangliangzi/article/details/51263337

     

    地址解析协议ARP:将主机和路由器的IP地址解析到硬件地址。

    ARP机制:每个主机都有一个ARP高速缓存,里面有本局域网中各主机、路由器的IP地址到硬件地址的映射表,而且这个映射表还经常动态更新。

     

    网际控制报文协议ICMP:提供主机或路由器询问情况、报告差错或异常情况。

    ICMP报文类型:1、差错报告报文2、询问报文

    ICMP应用:使用ping命令,在应用层越过传输层直接使用ICMP协议回送请求与回送回答报文,测试主机之间连通性。

     

    路由器分组转发算法(网络层操作):

    从数据报首部提取出目的主机的IP地址,根据IP地址类别(A、B、C、D类),提取出网络地址

    1、若网络地址N就是与路由器相连的网络地址,则直接将数据报交付给该网络的目的主机。(这里包括了网络接口软件通过ARP协议将IP地址转化为MAC地址,将数据报封装成链路层MAC帧,通过物理层线路发送此帧到目的主机的过程)

    2、若网络地址不是与路由器相连的网络地址,则查询路由表

         2.1、若路由表中有目的地址为数据报IP地址的特定主机路由,则将数据报发送给路由表指定的下一跳路由

         2.2、若路由表中有到达目标网络地址为N的路由,则将数据报发送给路由表指定的下一跳路由

         2.3、若路由表中有一个默认路由,则将数据报发送给路由表中的默认路由

         2.4、报告分组转发错误

     

     

    五、传输层(建立端口到端口通信)

    传输层:提供了端到端的服务。建立两端连接后,如何传递数据,传输数据的方式都在这里定义了。太大了需要分包,分片,另一端需要组装,如何组装等都在这一层定义

    传输层向高层拼比了下层数据通信的细节

     

    5.1 传输层的由来

    有了MAC地址和IP地址,已经可以在互联网上任意两台主机上建立通信。

     

    同一台主机上有许多程序都需用到网络,需要一个参数表示这个数据包到底供哪个程序(进程)使用。这个参数就叫做"端口"(port),它是每一个使用网卡的程序的编号。每个数据包都发到主机的特定端口,所以不同的程序就能取到自己所需要的数据。

    "端口"是0到65535之间的一个整数,正好16个二进制位0到1023的端口被系统占用,用户只能选用大于1023的端口【1024-49151为注册端口,49152-65535为动态或私有端口】。应用程序会随机选用一个端口,然后与服务器的相应端口联系。

    "传输层"的功能,就是建立"端口到端口"的通信。相比之下,"网络层"的功能是建立"主机到主机"的通信

    只要确定主机和端口,就能实现程序之间的交流。

     

    Unix系统就把主机+端口,叫做"套接字"(socket)。有了它,就可以进行网络应用程序开发了。

     

    传输层需要提供一台主机到另一远程主机的端对端通信控制,传输层利用互联网层发送数据,每一传输层都需要封装在一个互联网的数据报中通过互联网,到达目的地后,互联网层再将数据提交给传输层。

     

    注:传输层虽然使用互联网来携带报文,但互联网层并不阅读或干预报文。传输层仅把互联层看成一个包通信系统,这一通信系统负责连接两端的注解

    【传输层依赖于互联层】

     

    可靠性是计算机系统的基础,在网络数据传输中用户希望互联网能够提供迅速、准确、可靠的通信功能,保证不发生丢失,重复,乱序等可靠性问题、

     

    传输层是TCP/IP体系重要的一层,主要作用是保证端到端数据传输的可靠性

    TCP和UDP是传输层最重要的两种协议

    Tcp:传输控制协议;udp:用户数据报协议

     

    5.2 UDP协议(传输层)

    在数据包中加入端口信息,需要新的协议。最简单的实现叫UDP协议,格式是在数据前面,加上端口号。

    UDP数据包,也是由"标头"和"数据"两部分组成。

    "标头"部分主要定义了发出端口和接收端口,

    "数据"部分就是具体的内容。然后,把整个UDP数据包放入IP数据包的"数据"部分, IP数据包放在以太网数据包之中的,所以整个以太网数据包现在变成了下面这样:

    UDP数据包非常简单,"标头"部分一共只有8个字节,总长度不超过65,535字节,正好放进一个IP数据包。

    从用户角度来看,UDP处于传输层UDP提供了面向无连接,不可靠的传输服务

    UDP可以将数据直接封装在IP数据报中进行发送,不使用确认信息对数据的到达进行确认,不对收到的数据进行排序

    UDP在运行高效和实现简单下,可能出现数据丢失,乱序和重复的现象。(所以应用层需要承担检测)

     

    UDP协议的优点是比较简单,容易实现,但是缺点是可靠性较差,一旦数据包发出,无法知道对方是否收到。

    为了提高网络可靠性,TCP协议。

    TCP协议复杂,可近似认为,TCP协议是有确认机制的UDP协议,每发出一个数据包都要求确认。如果有一个数据包遗失,就收不到确认,发出方就知道有必要重发这个数据包了。

     

    5.3 TCP协议

    TCP协议能够确保数据不会遗失。它的缺点是过程复杂、实现困难、消耗较多的资源。

    TCP数据包和UDP数据包一样,都是内嵌在IP数据包的"数据"部分。

    TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。

    TCP可以提供面向连接、可靠的、全双工的数据流传输服务,保证数据在连接关闭之前可被可靠地投递到目的地

     

    TCP提供的服务有如下特征:

    面向连接:发送数据前,应用程序首先建立一个到目的主机的连接

    完全可靠性:TCP确保通过一个连接发送数据正确到达目的地,不会发生数据丢失和乱序

    全双工通信:TCP允许任意一方,任意时刻发送数据。

    流接口:TCP提供一个流接口,应用程序利用它可以发送连续的数据流

    连接的可靠性与优雅关闭:建立连接的过程中,TCP保证新连接不会与其他链接混淆,连接关闭时,TCP确定前传递的所有数据都可靠地到达目的地

     

     

    1. TCP可靠性实现

    可靠性指数据丢失后恢复的问题连接的可靠性建立

    1. 数据丢失和重发:需要双方协商解决(确认机制)

    接收方确认后,回复确认信息,发送方发数据是启动一个定时器,如果没有收到确认的话,重发该数据

    用karn算法计算tcp等待时间的算法。

    Tcp选择重发有适应性

    1. 连接的可靠性与优雅关闭:采用三次握手的方法,使得连接可靠。采用四次分手方法。

    先发连接请求(含自己的初始序列号)【注意:序列号是随机数】(32位的序列号)

    收到后,给确认信息(包含接受方的一个序列号),序列号是随机数

    传输数据,并回复确认信号

    三次握手可以避免过时的连接请求

    1. TCP缓冲、流控与窗口:通过窗口机制进行流量控制。

    连接时,每一端发送窗口报告(告知缓冲区可以接受的数据数)

    确认收到数据,附带自己剩余的缓存区尺寸

    剩余的缓冲区空间的数量称为窗口

    如果发送方速度大于接受方速度,导致接收方发送一个零窗口,让发送方必须停止发送()

     

    Tcp使用窗口和窗口控制的方式控制tcp的流量,使得发送方的数据不会溢出接收方的缓冲空间

    1. 连接与端口:一个tcp连接的两端称为端口。端口用16位

    TCP可以用端口提供多路复用功能。

    传输层端口,根据端口号来决定数据处理权。(端口提供不同应用服务)

    服务器和客户端都有端口(客户机发送的访问请求也要用服务器的端口对应)

     

     

     

    Q:TCP与UDP区别和联系

    TCP与UDP基本区别

      1.TCP面向连接。UDP面向无连接,发送之前不需要建立连接。

      2.TCP要求系统资源较多,UDP较少; TCP首部开销20字节;UDP的首部开销小,只有8个字节

      3.UDP程序结构较简单

      4.流模式(TCP)与数据报模式(UDP);

    TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的

    UDP无拥塞控制,网络出现拥塞不会使源主机的发送速率降低(对实时应用有用,如IP电话,实时视频会议等)

      5.TCP保证数据正确性,UDP可能丢包

      6.TCP保证数据顺序,UDP不保证

      7.每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信

      8.TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保   证可靠交付

     

    TCP应用场景:

     

     

    UDP应用场景:

      1.面向数据报方式

      2.网络数据大多为短消息

      3.拥有大量Client

      4.对数据安全性无特殊要求

      5.网络负担非常重,但对响应速度要求高

     

    UDP:

    UDP不提供复杂的控制机制,利用IP提供面向无连接的通信服务。并且它是将应用程序发来的数据在收到的那一刻,立刻按照原样发送到网络上的一种机制。即使是出现网络拥堵的情况下,UDP也无法进行流量控制等避免网络拥塞的行为。此外,传输途中如果出现了丢包,UDO也不负责重发。甚至当出现包的到达顺序乱掉时也没有纠正的功能。如果需要这些细节控制,那么不得不交给由采用UDO的应用程序去处理。换句话说,UDP将部分控制转移到应用程序去处理,自己却只提供作为传输层协议的最基本功能。UDP有点类似于用户说什么听什么的机制,但是需要用户充分考虑好上层协议类型并制作相应的应用程序。

     

    TCP:

    TCP充分实现了数据传输时各种控制功能,可以进行丢包的重发控制,还可以对次序乱掉的分包进行顺序控制。而这些在UDP中都没有。此外,TCP作为一种面向有连接的协议,只有在确认通信对端存在时才会发送数据,从而可以控制通信流量的浪费。TCP通过检验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输

     

     

     

     

    概述:虽然IP层将分组数据送到目的主机,但严格讲,计算机网络中的两个主机通信其实是两个主机上的应用进程通信,通信的端点不是主机而是主机上的应用进程。网络层提供主机间的逻辑通信,运输层提供端口间的逻辑通信。


    UDP的主要特点:

    1、UDP是面向无连接的运输层协议,发送数据前不用建立连接,可靠性降低但提高效率

    2、UDP是提供最大努力的交付服务

    3、UDP是面向报文的,即一次发送一个报文,不合并、不拆分,但如果数据过长会在网络层IP分片传输,影响网络层效率

    4、UDP无法避免网路拥塞时的数据丢失,但保证了发送数据的稳定速率

    5、UDP支持一对一、一对多、多对多的通信

    6、UDP首部较短只有8字节,较TCP的20字节(只包括固定字段长度)减小了开销。

    UDP首部字段:

    1、源端口

    2、目的端口

    3、长度,数据报的长度

    4、校验和,验证传输信息是否有错,有错就丢弃


    TCP的主要特点:

    1、TCP是面向连接的运输层协议。使用TCP之前必须建立TCP连接,就跟打电话一样,接通后才能通话

    2、TCP连接是点对点的,只能有两个端口

    3、TCP提供可靠的服务,无差错、不丢失、不重复、按序到达,而运输层以下都是不可靠的尽力提供最大努力的服务。

    4、TCP提供全双工通信,通信两端都设有发送缓存与接收缓存,可在空闲时发送或接受

    5、TCP面向字节流

    套接字(Socket)= IP地址:端口号

    TCP报文首部字段:

    主要首部字段解释:

    1、序号:该报文段的数据段第一个字节占整条报文数据段的位置

    2、确认号:期望收到的下一个报文段的序号(如:上一个报文段序号位600,数据段长度为100,在正确接收后,这次期望接受的数据序号为700)

    3、窗口大小:指出允许对方发送的数据量,可动态变化

    4、校验和:验证数据完整性与正确性

    5、紧急指针:指出本报文字段中紧急数据的尾部位置,注意:当窗口为0时也可以发送紧急数据

    6个控制位解释:

    1、ACK起应答作用,占1位;仅当ACK=1时,确认号字段才有效,ACK=0时,确认号无效

    2、SYN起同步作用;当SYN=1,ACK=0时表示:这是一个连接请求报文段。若同意连接,则在响应报文段中使得SYN=1,ACK=1。因此,SYN=1表示这是一个连接请求,或连接接受报文

    3、FIN用来释放一个连接;FIN=1表示:此报文段的发送方的数据已经发送完毕,并要求释放TCP连接

    4、PSH表示接收方应将报文交给应用层

    5、RST表示连接重置

    6、URG表示紧急指针,URG=1表示有紧急数据


    TCP三次握手与四次挥手参看TCP三次握手与四次挥手详解http://blog.csdn.net/zhangliangzi/article/details/50695611


    TCP可靠传输机制

    1、流量控制,滑动窗口机制——让发送方发送速率不太快,接收方来得及接收,通过滑动窗口机制实现,即接受方多次发出响应报文修改首部字段的窗口值以控制发送方数据发送速率

    2、拥塞控制,慢开始、拥塞避免、快重传、快恢复机制

     

     

     

     

    六、应用层

    应用层:为应用软件提供了很多服务。构建与TCP协议之上,屏蔽了网络传输相关的细节

     

    应用程序收到"传输层"的数据,接下来就要进行解读。由于互联网是开放架构,数据来源五花八门,必须事先规定好格式,否则根本无法解读。

    "应用层"的作用,就是规定应用程序的数据格式

    举例,TCP协议可以为各种各样的程序传递数据,如Email、WWW、FTP等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了"应用层"。

    最高的一层,直接面对用户。它的数据就放在TCP数据包的"数据"部分。因现在的以太网的数据包就变成下面这样。

    Http、FTP协议

     

     

    DNS:域名系统

    DNS域名解析:将域名解析成对应IP地址

    DNS域名服务器类型:

    1、根域名服务器

    2、顶级域名服务器

    3、权限域名服务器

    4、本地域名服务器

    DNS服务器域名解析流程:

    1、用户在浏览器输入要访问的网站的域名,如果操作系统检查到本地hosts文件中缓存着这个域名的映射关系,则直接调用,完成域名解析。 
    2、如果hosts文件中没有,则浏览器向本地DNS请求解析,如果缓存着映射关系,则返回结果,完成解析; 
    3、如果本地DNS没有,则将请求发往RootDNS(根DNS服务器),根DNS服务器会告知本地服务器去查询网站授权的DNS服务器,即把网站授权DNS服务器的IP地址发送给本地DNS服务器(网站授权的DNS服务器即为顶级、权限域名服务器); 
    4、网站授权DNS服务器将解析得到的IP地址发回本地DNS,本地DNS缓存映射关系并将IP地址发回给用户; 
    5、浏览器在得到IP地址后,向其发出HTTP请求。


    FTP:文件传送协议,基于TCP,要求建立两个并行的TCP连接,“控制连接”与“数据连接”


    万维网(WWW):一个大规模的、联机式的信息储藏所。浏览器就是万维网的客户端程序,客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所需要的万维网文档,也成为页面

    万维网与互联网、以太网关系及区别:万维网就是我们常说的互联网,而以太网是万维网的一种组网类型,是局域网采用的通用规范标准。

    URL:统一资源标识符,万维网用URL来唯一标识万维网文档

    HTML:超文本标记语言

    HTTP:万维网中客户端与服务端严格遵守的超文本传输协议,它本身是一种无状态、无连接协议,但它依赖于TCP实现数据传输,而TCP是有状态、有连接的,关于HTTP可参看HTTP必知必会http://blog.csdn.net/zhangliangzi/article/details/51336564


    SMTP:简单邮件传送协议,同样依赖于TCP实现邮件传输

    POP3:邮局协议

    POP3特点:采用客户-服务器工作方式,接收邮件的用户必须运行POP客户程序,与接收方的ISP的邮件服务器必须运行SMTP与POP服务器程序;优点是非常简单,缺点是只要用户从POP服务器中读取了邮件之后,POP服务器就将邮件删除

    IMAP:网际报文存取协议

    IMAP特点:用户PC运行IMAP客户端程序,然后与接收方的邮件服务器上的IMAP服务器建立TCP连接,使用户可以直接操作邮件服务器的邮箱;IMAP最大好处就是用户可以在不同地方使用不同计算机处理邮件,缺点就是多次查看就需要多次建立TCP连接

    基于万维网的电子邮件:163、GMAIL、新浪都使用这种邮件服务;浏览器编写邮件,然后通过HTTP协议把邮件发送到该网站的邮件服务器上,然后通过SMTP将邮件发送到接收方网站的邮件服务器上,再通过HTTP把邮件发送到对应用户的浏览器邮箱中。

    MIME:通用互联网邮件扩充,旧标准规定邮件文本不能包含7为ASCII代表的字符集以外的字符,MIME定义了许多邮件内容的格式,规定了各种格式的传送编码,可对任何内容格式进行转换。可通过邮件首部字段定义,如Content-Type=text/html;charset=utf-8


    DHCP:动态主机配置协议。提供了一种“即插即用连网”,这种机制允许一台计算机自动加入新的网络并获取IP地址。当客户程序移植到一个新的网络时,就可以使用DHCP自动获取配置信息。

     

     

     

     

     

     

     

     

    这是从系统的角度,解释互联网是如何构成的。

    互联网的总体构思,从下至上,每一层协议的设计思想。这是从设计者的角度看问题,

    切换到用户的角度,看看用户是如何从上至下,与这些协议互动的。

     

     

    展开全文
  • 互联网协议基础知识

    千次阅读 2018-12-20 17:13:45
    互联网协议的功能:定义计算机如何接入internet,以及接入internet的计算机通信的标准。 2、互联网分层模型 互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层 每层运行常见物理设备 2.1 物理层...

    一、网络通信原理

    引用自:
    阮一峰的网络日志----互联网协议入门(一)
    阮一峰的网络日志----互联网协议入门(二)
    OSI七层协议大白话解读
    网络七层协议解释
    漫谈网络通信——从OSI网络模型到TCP/IP协议族

    《TCP/IP详解 卷1:协议》读书笔记
    【老生常谈的】互联网协议
    TCP/IP协议(一)网络基础知识

    1、互联网协议

    互联网的本质就是一系列的网络协议,总称为“互联网协议”(Internet Protocol Suite)。

    互联网协议的功能:定义计算机如何接入internet,以及接入internet的计算机通信的标准。

    2、互联网分层模型

    互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层


    在这里插入图片描述

    每层运行常见物理设备


    在这里插入图片描述
    在这里插入图片描述

    2.1 物理层(Physical Layer)

    物理层主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。

    它的主要作用是传输数据比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。

    2.2 数据链路层(Datalink Layer)

    物理层为我们提供了在两台设备之间传输0和1的可能,但是只是单纯的传输0和1是没有意义的。链路层的作用是将这些01信号序列化,转化为有意义的数据帧。

    那么链路层是怎么工作的呢?它工作过程大概可以理解为三个部分,发送什么数据?发送给谁?怎么发送?

    2.2.1 以太网协议

    首先需要有一个规则来定义这些01电信号,使得这些电信号变得有意义,形成了统一的标准(标准就是协议),即以太网协议(Ethernet)。

    Ethernet规定:
    一组电信号构成一个数据包,叫做"帧"(Frame)。每一帧分成两个部分:标头(Head)和数据(Data)。


    在这里插入图片描述

    head包含(固定18字节)

    • 发送者(源地址,6个字节)
    • 接收者(目标地址,6个字节)
    • 数据类型(6个字节)

    data包含:(最短46字节,最长1500字节)

    • 数据包的具体内容

    "标头"的长度,固定为18字节。"数据"的长度,最短为46字节,最长为1500字节。因此,整个"帧"最短为64字节,最长为1518字节。如果数据很长,就必须分割成多个帧进行发送。

    2.2.2 MAC地址

    以太网规定,连入网络的所有设备,都必须具有"网卡"接口。数据包必须是从一块网卡,传送到另一块网卡。网卡的地址,就是数据包的发送地址和接收地址,这叫做MAC地址。


    在这里插入图片描述

    每块网卡出厂的时候,都有一个全世界独一无二的MAC地址,长度是48个二进制位,通常用12个十六进制数表示。


    在这里插入图片描述

    前6个十六进制数是厂商编号,后6个是该厂商的网卡流水号。有了MAC地址,就可以通过这个地址去向目标设备发送数据。

    2.2.3 广播

    知道了目标设备的MAC地址,但是怎么才能把把消息准确的发送给目标设备呢?其实解决方法很简单,发送数据时,将向网络中所有设备都发送这个消息,然后每一台设备自己来判断数据标头中包含的MAC地址是否和自己的MAC地址一致,如果一致就接收这个消息,如果不一致就不接收。这种发送数据的方式叫做“广播”。通过“广播”的方式就可以把一条数据发送到指定设备上了。


    在这里插入图片描述

    上图中,1号计算机向2号计算机发送一个数据包,同一个子网络的3号、4号、5号计算机都会收到这个包。它们读取这个包的"标头",找到接收方的MAC地址,然后与自身的MAC地址相比较,如果两者相同,就接受这个包,做进一步处理,否则就丢弃这个包。

    有了数据包的定义、网卡的MAC地址、广播的发送方式,"链接层"就可以在多台计算机之间传送数据了。

    2.3 网络层(Network Layer)

    2.3.1 网络层的由来:

    以太网协议,依靠MAC地址发送数据。理论上,单单依靠MAC地址,上海的网卡就可以找到洛杉矶的网卡了。实际上,“广播”的方式只能在同一子网络内发送数据。也就是说,如果两台计算机不在同一个子网络,广播是传不过去的。

    因此,必须找到一种方法,能够区分哪些MAC地址属于同一个子网络,哪些不是。如果是同一个子网络,就采用广播方式发送,否则就采用"路由"方式发送。("路由"的意思,就是指如何向不同的子网络分发数据包)遗憾的是,MAC地址本身无法做到这一点。它只与厂商有关,与所处网络无关。

    这就导致了"网络层"的诞生。它的作用是引进一套新的地址,使得我们能够区分不同的计算机是否属于同一个子网络。这套地址就叫做"网络地址",简称"网址"。

    于是,"网络层"出现以后,每台计算机有了两种地址,一种是MAC地址,另一种是网络地址。两种地址之间没有任何联系,MAC地址是绑定在网卡上的,网络地址则是管理员分配的,它们只是随机组合在一起。

    网络地址帮助我们确定计算机所在的子网络,MAC地址则将数据包送到该子网络中的目标网卡。因此,从逻辑上可以推断,必定是先处理网络地址,然后再处理MAC地址。

    2.3.2 IP协议

    规定网络地址的协议,叫做IP协议。它所定义的地址,就被称为IP地址。

    目前,广泛采用的是IP协议第四版,简称IPv4。这个版本规定,网络地址由32个二进制位组成。


    在这里插入图片描述

    习惯上,我们用分成四段的十进制数表示IP地址,从0.0.0.0一直到255.255.255.255。

    互联网上的每一台计算机,都会分配到一个IP地址。这个地址分成两个部分,前一部分代表网络,后一部分代表主机。比如,IP地址172.16.254.1,这是一个32位的地址,假定它的网络部分是前24位(172.16.254),那么主机部分就是后8位(最后的那个1)。处于同一个子网络的电脑,它们IP地址的网络部分必定是相同的,也就是说172.16.254.2应该与172.16.254.1处在同一个子网络。

    但是,问题在于单单从IP地址,我们无法判断网络部分。还是以172.16.254.1为例,它的网络部分,到底是前24位,还是前16位,甚至前28位,从IP地址上是看不出来的。

    那么,怎样才能从IP地址,判断两台计算机是否属于同一个子网络呢?这就要用到另一个参数"子网掩码"(subnet mask)。

    所谓"子网掩码",就是表示子网络特征的一个参数。它在形式上等同于IP地址,也是一个32位二进制数字,它的网络部分全部为1,主机部分全部为0。比如,IP地址172.16.254.1,如果已知网络部分是前24位,主机部分是后8位,那么子网络掩码就是11111111.11111111.11111111.00000000,写成十进制就是255.255.255.0。

    知道"子网掩码",我们就能判断,任意两个IP地址是否处在同一个子网络。方法是将两个IP地址与子网掩码分别进行AND运算(两个数位都为1,运算结果为1,否则为0),然后比较结果是否相同,如果是的话,就表明它们在同一个子网络中,否则就不是。

    比如,已知IP地址172.16.254.1和172.16.254.233的子网掩码都是255.255.255.0,请问它们是否在同一个子网络?两者与子网掩码分别进行AND运算,结果都是172.16.254.0,因此它们在同一个子网络。

    总结一下,IP协议的作用主要有两个,一个是为每一台计算机分配IP地址,另一个是确定哪些地址在同一个子网络。

    2.3.3 IP数据包

    根据IP协议发送的数据,就叫做IP数据包。不难想象,其中必定包括IP地址信息。

    但是前面说过,以太网数据包只包含MAC地址,并没有IP地址的栏位。那么是否需要修改数据定义,再添加一个栏位呢?

    回答是不需要,我们可以把IP数据包直接放进以太网数据包的"数据"部分,因此完全不用修改以太网的规格。这就是互联网分层结构的好处:上层的变动完全不涉及下层的结构。

    具体来说,IP数据包也分为"标头"和"数据"两个部分。


    在这里插入图片描述

    "标头"部分主要包括版本、长度、IP地址等信息,"数据"部分则是IP数据包的具体内容。它放进以太网数据包后,以太网数据包就变成了下面这样。


    在这里插入图片描述

    IP数据包的"标头"部分的长度为20到60字节,整个数据包的总长度最大为65,535字节。因此,理论上,一个IP数据包的"数据"部分,最长为65,515字节。前面说过,以太网数据包的"数据"部分,最长只有1500字节。因此,如果IP数据包超过了1500字节,它就需要分割成几个以太网数据包,分开发送了。

    2.3.4 ARP协议

    关于"网络层",还有最后一点需要说明。

    因为IP数据包是放在以太网数据包里发送的,所以我们必须同时知道两个地址,一个是对方的MAC地址,另一个是对方的IP地址。通常情况下,对方的IP地址是已知的,但是我们不知道它的MAC地址。

    所以,我们需要一种机制,能够从IP地址得到MAC地址。

    这里又可以分成两种情况:
    第一种情况,如果两台主机在同一个子网络,那么我们可以用ARP协议,得到对方的MAC地址。ARP协议,通过“广播”的方式向子网络内所有设备发送一条数据包(包含在以太网数据包中),其中包含它所要查询主机的IP地址,在对方的MAC地址这一栏,填的是FF:FF:FF:FF:FF:FF,表示这是一个"广播"地址。它所在子网络的每一台主机,都会收到这个数据包,从中取出IP地址,与自身的IP地址进行比较。如果两者相同,就做出回复,向对方报告自己的MAC地址,否则就丢弃这个包,这样就可以通过IP地址获取到MAC地址了。

    总之,有了ARP协议之后,我们就可以得到同一个子网络内的主机MAC地址,可以把数据包发送到任意一台主机之上了。

    第二种情况,如果两台主机不在同一个子网络,那么事实上没有办法得到对方的MAC地址,只能把数据包传送到两个子网络连接处的"网关"(gateway),网关通过路由协议再将数据发送到目标设备上。(网络通过路由器进行连接,形成互联网。路由器是网关,但是网关不一定是路由器。 )


    在这里插入图片描述

    如图,主机2想向主机4发送一条数据,必须先将数据发送至网关A,由网关A通过路由协议查询到主机4处于子网络B,网关A会将数据发送给网关B,网关B再将数据发送给主机4,这样便完成了主机2到主机4之间的通讯。

    至此,我们应该清楚了,在两台设备间通讯所必须的条件,首先我们需要判断两台设备是否处在同一子网络中,若在同一子网络,就可以利用ARP协议来获取MAC地址,得到目标IP和MAC地址,就可以发送数据。若不在同一子网络,则需要获取网关的MAC地址,将数据发送到网关,让网关来转发。现在我们就可以在互联网上任意两台设备间通讯了。

    2.4 传输层 (Transport Layer)

    有了MAC地址和IP地址,我们已经可以在互联网上任意两台主机上建立通信。

    接下来的问题是,同一台主机上有许多程序都需要用到网络,比如,你一边浏览网页,一边与朋友在线聊天。当一个数据包从互联网上发来的时候,你怎么知道,它是表示网页的内容,还是表示在线聊天的内容?

    也就是说,我们还需要一个参数,表示这个数据包到底供哪个程序(进程)使用,这个参数就叫做"端口"(port)。它其实是每一个使用网卡的应用程序的编号,不同的应用程序在主机上发送或接收数据,都要通过不同的端口,以此来确定数据包是归那个应用程序所有。

    "端口"是0到65535之间的一个整数,正好16个二进制位。0到1023的端口被系统占用,用户只能选用大于1023的端口。不管是浏览网页还是在线聊天,应用程序会随机选用一个端口,然后与服务器的相应端口联系。

    "传输层"的作用,就是建立"端口到端口之间"的通信,最常用的协议是TCP、UDP协议。相比之下,“网络层"的功能是建立"主机到主机之间"的通信。只要确定主机和端口,我们就能实现程序之间的交流。因此,Unix系统就把主机+端口,叫做"套接字”(socket)。有了它,就可以进行网络应用程序开发了。

    2.4.1 UDP协议(不可靠传输)

    现在,我们必须在数据包中加入端口信息,这就需要新的协议。最简单的实现叫做UDP协议,它的格式几乎就是在数据前面,加上端口号。

    UDP数据包,也是由"标头"和"数据"两部分组成。


    在这里插入图片描述

    "标头"部分主要定义了发出端口和接收端口,"数据"部分就是具体的内容。然后,把整个UDP数据包放入IP数据包的"数据"部分,而前面说过,IP数据包又是放在以太网数据包之中的,所以整个以太网数据包现在变成了下面这样:


    在这里插入图片描述

    UDP数据包非常简单,"标头"部分一共只有8个字节,总长度不超过65,535字节,正好放进一个IP数据包。

    2.4.2 TCP协议(可靠传输)

    UDP协议的优点是比较简单,容易实现,但是缺点是可靠性较差,一旦数据包发出,无法知道对方是否收到。

    为了解决这个问题,提高网络可靠性,TCP协议就诞生了。这个协议非常复杂,但可以近似认为,它就是有确认机制的UDP协议,每发出一个数据包都要求确认。如果有一个数据包遗失,就收不到确认,发出方就知道有必要重发这个数据包了。

    因此,TCP协议能够确保数据不会遗失。它的缺点是过程复杂、实现困难、消耗较多的资源。

    TCP数据包和UDP数据包一样,都是内嵌在IP数据包的"数据"部分。TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。

    TCP三次握手和四次挥手
    TCP(Transmission Control Protocol) 传输控制协议
    TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:
    位码即tcp标志位,有6种标示:SYN(建立联机) ACK(确认) PSH(传送) FIN(结束) RST(重置) URG(紧急)
    Sequence number(顺序号码) Acknowledge number(确认号码)


    三次握手
    在这里插入图片描述

    • 第一次握手:TCP服务器进程先创建传输控制块TCB,时刻准备接受客户进程的连接请求,此时服务器就进入了LISTEN(监听)状态;TCP客户进程也是先创建传输控制块TCB,然后向服务器发出连接请求报文,这是报文首部中的同部位SYN=1,同时选择一个初始序列号 seq=x ,此时,TCP客户端进程进入了 SYN-SENT(同步已发送状态)状态。TCP规定,SYN报文段(SYN=1的报文段)不能携带数据,但需要消耗掉一个序号。

    • 第二次握手:TCP服务器收到请求报文后,如果同意连接,则发出确认报文。确认报文中应该 ACK=1,SYN=1,确认号是ack=x+1,同时也要为自己初始化一个序列号 seq=y,此时,TCP服务器进程进入了SYN-RCVD(同步收到)状态。这个报文也不能携带数据,但是同样要消耗一个序号。

    • 第三次握手:TCP客户进程收到确认后,还要向服务器给出确认。确认报文的ACK=1,ack=y+1,自己的序列号seq=x+1,此时,TCP连接建立,客户端进入ESTABLISHED(已建立连接)状态。TCP规定,ACK报文段可以携带数据,但是如果不携带数据则不消耗序号。当服务器收到客户端的确认后也进入ESTABLISHED状态,此后双方就可以开始通信了。


      四次挥手
      在这里插入图片描述

    • 第一次挥手:客户端进程发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN-WAIT-1(终止等待1)状态。 TCP规定,FIN报文段即使不携带数据,也要消耗一个序号。

    • 第二次挥手:服务器收到连接释放报文,发出确认报文,ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT(关闭等待)状态。TCP服务器通知高层的应用进程,客户端向服务器的方向就释放了,这时候处于半关闭状态,即客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接受。这个状态还要持续一段时间,也就是整个CLOSE-WAIT状态持续的时间。
      客户端收到服务器的确认请求后,此时,客户端就进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文(在这之前还需要接受服务器发送的最后的数据)。

    • 第三次挥手:服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,FIN=1,ack=u+1,由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为seq=w,此时,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。

    • 第四次挥手:客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(时间等待)状态。注意此时TCP连接还没有释放,必须经过2∗MSL(最长报文段寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态。
      服务器只要收到了客户端发出的确认,立即进入CLOSED状态。同样,撤销TCB后,就结束了这次的TCP连接。可以看到,服务器结束TCP连接的时间要比客户端早一些。

    2.5 应用层(Application Layer)

    应用程序收到"传输层"的数据,接下来就要进行解读。由于互联网是开放架构,数据来源五花八门,必须事先规定好格式,否则根本无法解读。

    "应用层"的作用,就是规定应用程序的数据格式。

    举例来说,TCP协议可以为各种各样的程序传递数据,比如Email、WWW、FTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了"应用层"。

    这是最高的一层,直接面对用户。它的数据就放在TCP数据包的"数据"部分。因此,现在的以太网的数据包就变成下面这样。


    在这里插入图片描述

    应用层中的应用软件分两种:客户/服务器和P2P体系结构

    • 客户/服务器(client/server)
      这种类型,就是我们很熟悉的客户端——服务器模型,客户端请求服务器,服务器响应客户端这样的一种方式进行“交流”

    • P2P
      也称为对等体系结构。P2P相当于每个人的电脑度可以当服务器,也可以当客户端,不单单限制于只能客户端访问服务器,你自己的计算机可以去访问别人的计算机上的内容,别的同样可以访问你计算机上的内容,这样达到一种共享的状态。

    常用协议:

    • HTTP超文本传输协议:这是一种最基本的客户机/服务器的访问协议;浏览器向服务器发送请求,而服务器回应相应的网页

    • DNS域名解析协议:DNS是一种用以将域名转换为IP地址的Internet服务

    • FTP文件传送协议:提供交互式的访问,基于客户服务器模式,面向连接 使用TCP可靠的运输服务

      主要功能:减少/消除不同操作系统下文件的不兼容性

    • TFTP简单文件传送协议:客户服务器模式,使用UDP数据报,只支持文件传输,不支持交互,TFTP代码占内存小

    • SMTP简单邮件传送协议:Client/Server模式,面向连接

      基本功能:写信、传送、报告传送情况、显示信件、接收方处理信件

    • TELNET远程登录协议:客户服务器模式,能适应许多计算机和操作系统的差异,网络虚拟终端NVT的意义

    • SNMP简单网络管理协议:SNMP模型的4个组件:被管理结点、管理站、管理信息、管理协议

      SNMP代理:运行SNMP管理进程的被管理结点

      对象:描述设备的变量

      管理信息库(MIB):保存所有对象的数据结构

    • DHCP动态主机配置协议:发现协议中的引导文件名、空终止符、属名或者空,DHCP供应协议中的受限目录路径名 Options –可选参数字段,参考定义选择列表中的选择文件

    3、OSI七层模型

    在这里插入图片描述

    数据在网络中传输的过程:
    发送方通过各种封装处理,把数据转换成比特流的形式,比特流在信号传输的硬件媒介中传输,接收方再把比特流进行解封装处理。


    在这里插入图片描述

    展开全文
  • 互联网协议入门-通俗易懂的讲计算机网络5层结构

    千次阅读 多人点赞 2016-06-18 19:14:12
    这是我见过的介绍计算机网络5层架构最清楚的讲解,对于学习计算机网络5层架构一定是不可缺少的一篇文章,相信...互联网的核心是一系列协议,总称为”互联网协议”(Internet Protocol Suite)。它们对电脑如何连接和组
  • 计算机协议详解

    千次阅读 2018-08-01 18:38:05
    下面是协议层从底层至顶层的一个模型图:   一、计算机网络的背景 1.1 计算机的发展 有人说:“20世纪最伟大的发明就是计算机”,自诞生伊始,计算机经历了一系列发展,从大型通用计算机、超级计算机...
  • 有适当整理。 全世界几十亿台电脑,连接在一起,两两通信。上海的某一块网卡送出信号,洛杉矶的另一块...互联网的核心是一系列协议,总称为”互联网协议”(Internet Protocol Suite)。它们对电脑如何连接和组网,
  • 计算机网络协议(四)——HTTP、HTTPS、P2P协议

    万次阅读 多人点赞 2019-09-04 16:08:17
    这个专栏的计算机网络协议,我是在极客时间学习 已经有三万多人购买的刘超老师的趣谈网络协议专栏,讲的特别好,像看小说一样学习到了平时很枯燥的知识点,计算机网络的书籍太枯燥,感兴趣的同学可以去付费购买,...
  • 互联网协议

    2012-06-11 12:18:06
    我们每天使用互联网,你是否想过,它是如何实现的?...互联网的核心是一系列协议,总称为"互联网协议"(Internet Protocol Suite)。它们对电脑如何连接和组网,做出了详尽的规定。理解了这些协议,就理解了互联网
  • 互联网协议入门

    万次阅读 2016-01-06 23:29:55
    互联网的核心是一系列协议,总称为"互联网协议"(Internet Protocol Suite)。它们对电脑如何连接和组网,做出了详尽的规定。理解了这些协议,就理解了互联网的原理。下面就是我的学习笔记。因为这些协议实在太复杂...
  • 互联网入门协议

    千次阅读 2013-11-28 12:29:06
    我们每天使用互联网,你是否想过,它是如何实现的?... 互联网的核心是一系列协议,总称为"互联网协议"(Internet Protocol Suite)。它们对电脑如何连接和组网,做出了详尽的规定。理解了这些协议,就理解了互联网
  • 计算机网络多层协议

    千次阅读 2018-05-08 20:14:17
    为了能够在面试的时候被面试官问道关于计算机网络的知识时,不至于哑口无言,我就默默的在这里多计算机网络的基础知识进行了一个大致的复习。陆续还会继续更新。。。常识:互联网地址:也就是IP地址,一般为网络号+...
  • **IP(Internet Protocol,因特网协议)**是网络层的核心协议,规定了网络层的封装规范,将上层(传输层)传递下来的数据段附加 IP 首部封装成 IP 数据包,又称数据报文,IP 数据包同样由包首部和数据两部分组成,...
  • 我们每天使用互联网,你是否想过,它是如何实现...互联网的核心是一系列协议,总称为"互联网协议"(Internet Protocol Suite)。它们对电脑如何连接和组网,做出了详尽的规定。理解了这些协议,就理解了互联网的原理。
  • 互联网协议基础

    2017-03-10 20:17:23
    如图:互联网协议的“五层描述”:由顶至底依次是: 1,Application Layer: 应用层 2,Transport Layer:传输层 3,Network Layer: 网络层 4,Link Layer:链接层 5,Physical Layer:物理层 越顶层越贴近...
  • 第一篇:互联网协议入门(

    多人点赞 2017-08-22 09:51:58
    我们每天使用互联网,你是否想过,它是如何实现的?...互联网的核心是一系列协议,总称为"互联网协议"(Internet Protocol Suite)。它们对电脑如何连接和组网,做出了详尽的规定。理解了这些协议,就理解了互联网
  • 计算机网络协议,PPP协议分析

    千次阅读 2020-03-01 16:42:07
    1.PPP协议计算机网络体系中第二层(数据链路层)的协议 2.PPP帧格式是以HDLC帧格式为基础,做了很少的改动(区别:PPP是面向字符的,而HDLC是面向位的) 3.PPP协议使用了LCP协议和NCP协议。用LCP(链路控制协议...
  • 互联网协议模型详解

    2018-07-18 12:52:32
    我们每天使用互联网,你是否想过,它...互联网的核心是一系列协议,总称为"互联网协议"(Internet Protocol Suite)。 它们对电脑如何连接和组网,做出了详尽的规定。理解了这些协议,就理解了互联网的原...
  • 第八章、互联网上的音频/视频服务 本章的重要概念 多媒体信息两个重要特点:(1)多媒体信息的信息量往往很大;(2)在传输媒体数据时,对时延和时延抖动均有较高的要求。在互联网上传输多媒体数据时,我们都是指...
  • 互联网的核心是一系列协议,总称为"互联网协议"(Internet Protocol Suite)。它们对电脑如何连接和组网,做出了详尽的规定。理解了这些协议,就理解了互联网的原理。下面就是我的学习笔记。因为这些协议实在太复杂...
  • 计算机网络协议集合

    千次阅读 多人点赞 2018-03-21 09:17:26
    阅读目录 1. 网络层次划分2. OSI七层网络模型3. IP地址4. 子网掩码及网络划分5. ARP/RARP协议6. 路由选择协议7. TCP/IP协议8. UDP协议 9.... 计算机网络学习的核心内容就是网络协议的学习。网络...
  • 计算机网络协议层次讲网络

    千次阅读 2018-09-01 20:38:58
    计算机网络协议层次
  • 1、网络的概念 网络是由若干个节点和连接这些节点的链路组成,网络中的...Ip地址就是给因特网的每一个主机(或路由器)的每一个接口分配的一个在全世界范围内唯一的标识符。 ②IP地址的结构便于寻址。 (2)IP地址分

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 43,718
精华内容 17,487
关键字:

互联网上标识计算机的协议