本文比较长,有些没有详细介绍的将会拆分出来在新的博客中。php
OSI参考模型:html
除了标准的OSI七层模型之外,常见的网络层次划分还有TCP/IP四层协议以及TCP/IP五层协议,它们之间的对应关系以下图所示:算法
物理层重要设备:中继器(放大器)和集线器。数据库
数据链路层重点:浏览器
1为网络层提供可靠的数据传输;缓存
2基本数据单位:帧;安全
3主要协议:以太网协议;服务器
4重要设备:网桥和交换机。网络
网络层中涉及众多的协议,最重要的协议是TCP/IP,核心协议——IP协议。分布式
IP协议仅仅提供不可靠、无链接的传送服务。
IP协议的主要功能有:无链接数据报传输、数据报路由选择和差错控制。
网络层的重点:
一、负责对子网间的数据包进行路由选择。实现拥塞控制、网际互连等功能;
二、基本数据单位:IP数据报;
三、包含的主要协议:
IP协议(Internet Protocol,因特网互联协议);
ICMP协议(Internet Control Message Protocol,因特网控制报文协议);
ARP协议(Address Resolution Protocol,地址解析协议);
RARP协议(Reverse Address Resolution Protocol,逆地址解析协议)。
四、重要设备:路由器。
网络层重点:
一、负责将上层数据分段并提供端到端的、可靠的或不可靠的传输以及端到端的差错控制和流量控制问题;
二、主要协议:
TCP协议(Transmission Control Protocol,传输控制协议)、
UDP协议(User Datagram Protocol,用户数据报协议);
三、重要设备:网关。
会话层、表示层和应用层重点:
一、数据传输基本单位:报文;
二、主要协议:FTP(文件传送协议)、Telnet(远程登陆协议)、DNS(域名解析协议)、SMTP(邮件传送协议),POP3协议(邮局协议),HTTP协议(Hyper Text Transfer Protocol)。
1)网络地址
IP地址 = 网络号(包括子网号)+ 主机号组成
规定首字节不能是127、0、255,主机各位不能同时为0和1。主机号全0表示网络号,主机号全1表示广播地址
A类地址:0开头。 网络号:第一个字节。 范围:1.0.0.0 ~ 127.255.255.255
B类地址:10开头。 网络号:前两个字节。 范围:128.0.0.0 ~ 191.255.255.255
C类地址:110开头。网络号:前三个字节。 范围:192.0.0.0 ~ 223.255.255.255
D类地址:1110开头。范围:224.0.0.0 ~ 239.255.255.255
E类地址:1111开头。范围:240.0.0.0 ~ 255.255.255.255。E类地址为保留地址,供之后使用。
只有A,B,C有网络号和主机号之分,D类地址和E类地址没有划分网络号和主机号。
2)广播地址
广播地址(直接广播地址),区分受限广播地址。
主机号为全1。当向某个网络的广播地址发送消息时,该网络内的全部主机都能收到该广播消息。
3)组播地址
D类地址做为组播地址,一对多的通讯;
4)255.255.255.255
该IP地址是受限广播地址,只能用于本地网络,路由器不会转发以受限广播地址为目的地址的分组;广播地址(直接广播地址)可以经过某些路由器(不是全部的路由器),而受限的广播地址不能经过路由器。
5)0.0.0.0
经常使用于寻找本身的IP地址,例如在咱们的RARP,BOOTP和DHCP协议中,若某个未知IP地址的无盘机想要知道本身的IP地址,它就以255.255.255.255为目的地址,向本地范围的服务器发送IP请求分组。
6)回环地址
127.0.0.0/8被用做回环地址,回环地址表示本机的地址,经常使用于对本机的测试,用的最多的是127.0.0.1。
7)A、B、C 类私有地址
私有地址(private address),私有路由不能对外直接提供信息
在 IPv4 规划时担忧 IP 有不足的状况,并且为了应付某些企业内部的网络设定,因而有了私有 IP (Private IP) 。私有 IP 分别在 A, B, C 三个 Class 当中各保留一段做为私有 IP 网段:
Class A:10.0.0.0 - 10.255.255.255
Class B:172.16.0.0 - 172.31.255.255
Class C:192.168.0.0 - 192.168.255.255
网段上每台主机保存ARP表或ARP缓存的表格,其中包含了网段上其余主机的IP地址与物理地址的对应关系。
ARP协议工做流程:
1、当主机向网段上的其余主机发送数据时,先查看ARP缓存上物理地址。ARP缓存是动态变化的
2、不在ARP缓存中,主机发送一个名为ARP请求帧的广播。ARP请求帧包含为解析的IP地址,还包含发送这个请求的主机的IP地址和物理地址。
三、网段上的其余主机收到请求,拥有这个未解析IP地址的主机向发出请求的主机发送本身的物理地址。这个新的IP地址与物理地址的对应关系就会添加到请求主机的ARP缓存中。
RARP协议工做流程:
1、给主机发送一个本地的RARP广播,在此广播包中,声明本身的MAC地址而且请求任何收到此请求的RARP服务器分配一个IP地址;
2、本地网段上的RARP服务器收到此请求后,检查其RARP列表,查找该MAC地址对应的IP地址
IPv4的网络号占位太多,而主机号位太少,主机地址稀缺。为了有效地利用IP地址,经过对主机号的高位部分取做为子网号,从一般的网络位界限中扩展或压缩子网掩码,用来建立某类地址的更多子网。(建立更多子网时,每一个子网上可用主机地址数目减小)
什么是子网?
子网划分能够利用IP地址系统把物理网络分解为更小的逻辑实体——子网。
子网的概念最先源自于地址分类系统,并且在ABC类地址中可以获得很好的展示。然而硬件厂商和internet社区创建了一种解析地址的新系统,名为无类别域间路由(CIDR),它不须要关心地址类别。
子网最显著的特征具备子网掩码。划分子网时须要注意:主机ID为全0时表示网络ID,全1时表示广播地址。
什么是子网掩码?
子网掩码:标志两个IP地址是否同属于一个子网,是32位二进制地址。1表明该位是网络位,0表明主机位。它和IP地址同样也是使用点式十进制来表示。
若是两个IP地址在子网掩码的按位与的计算下所得结果相同,即代表它们共属于同一子网中。
子网掩码不能单独存在,必须结合IP地址一块儿使用。子网掩码只有一个做用,就是将某个IP地址划分红网络地址和主机地址两部分。
A类默认子网掩码 255.0.0.0 一个子网最多能够容纳1677万多台电脑
B类默认子网掩码 255.255.0.0 一个子网最多能够容纳6万台电脑
C类默认子网掩码 255.255.255.0 一个子网最多能够容纳254台电脑
1、经过子网掩码计算子网个数及每一个子网中可以使用的主机地址个数:
一、转换成二进制:11111111.11111111.11111111.00000000,后面有8个0
2、2^8 -- 2 = 254台,(有两个IP不能用,最后一段不能为0和255)
若要把***.***.***.0/m划分为***.***.***.0/n(m<n<32),获得的子网个数为2^(n-m),去掉全0和全1,可用子网个数为2^(n-m) -- 2,每一个子网中可以使用的主机地址是2^(32-n) -- 2。
把网络117.15.32.0/23划分为117.15.32.0/27,获得的子网是 16 个,可用子网个数为14个,每一个子网中可以使用的主机地址是 30 个。
2、经过子网个数或主机地址个数计算子网掩码:
1)根据主机数计算子网掩码:
1、将主机数目转化为二进制来表示:700 = 1010111100
2、若是主机数小于或等于254(N<8)(注意去掉保留的两个IP地址),取该主机的二进制位数N 。若是大于254, N>8,说明主机地址占据不止8位。该二进制为十位数,N=10
3、使用255.255.255.255将该类IP地址的主机地址位数所有置1,而后从后向前的将N位所有置为 0,即为子网掩码值。
子网掩码一共由32位组成,肯定后面10位是0,那前面的22位就是1,最合适的子网掩码:11111111.11111111.11111100.00000000,转换成10进制:255.255.252.0。
2)根据子网数计算子网掩码:
1、27-1=26,转化为二进制11010(--1由于计算机从0开始,到26才是27个)
2、该二进制的位数:N=5。B类地址的子网掩码255.255.0.0,将其主机地址前5位置1,即11111111.11111111.11111000.00000000=255.255.248.0。
注:将主机地址前5位置1,划分出2^5 -- 2=30个子网。(去掉全0和全1的子网)
IP地址的网段
把IP的每一段转换为一个二进制数,192.168.0.1 = 11000000.10101000.00000000.00000001
IP 11000000.10101000.00000000.00000001
子网掩码 11111111.11111111.11111111.00000000
要想在同一网段,必需作到网络标识相同。各种IP的网络标识算法:A类只算第一段。B类只算第1、二段。C类算第1、2、三段。
将 IP 地址和子网掩码进行逻辑与运算
如:192.168.0.1, 255.255.255.0,先转换为二进制
IP 11000000.10101000.00000000.00000001
子网掩码 11111111.11111111.11111111.00000000
逻辑与结果 11000000.10101000.00000000.00000000
转换为十进制192.168.0.0,这就是网络标识
再将子网掩码取反:00000000.00000000.00000000.11111111,与IP逻辑与运算
得出结果00000000.00000000.00000000.00000001,转换为10进制,即0.0.0.1,
0.0.0.1就是主机标识。
先转换成二进制
188.188.0.111 = 10111100.10111100.00000000.01101111
188.188.5.222 = 10111100.10111100.00000101.11011010
255.255.254.0 = 11111111.11111111.11111110.00000000 (子网掩码)
分别将 IP 地址和子网掩码进行逻辑与运算,得
10111100.10111100.00000000.00000000
10111100.10111100.00000100.00000000
B类IP ,判断第一二段,网络标识同样,在同一网段。
TCP/IP协议族,简称TCP/IP。该协议家族的两个核心协议:TCP(传输控制协议)和IP(网际协议)TCP负责发现传输的问题,一有问题就发出信号,要求从新传输,直到全部数据安全正确地传输到目的地。IP给因特网的每台联网设备规定一个地址。
DNS(Domain Name System,域名系统),因特网上做为域名和IP地址相互映射的一个分布式数据库,可以使用户更方便的访问互联网,而不用去记住可以被机器直接读取的IP数串。经过主机名,最终获得该主机名对应的IP地址的过程叫作域名解析(或主机名解析)。
详细参考维基百科:https://zh.wikipedia.org/wiki/域名系统
DNS域名查找流程
当用户在浏览器中输入域名,如:www.google.com,并按下回车后,DNS解析过程大致以下:
注:下面标题对应着序号
1、浏览器缓存检查(本机)
浏览器会首先搜索浏览器自身的DNS缓存(域名被缓存的时间能够经过TTL属性来设置,通常是1分钟,且只能容纳1000条缓存),若是自身的缓存中有www.google.com对应的条目,并且没有过时,则解析到此结束。
2、操做系统缓存检查(本机)+hosts解析(本机)
若是浏览器自身缓存里没有对应条目,浏览器去搜索操做系统自身的DNS缓存中是否有这个域名对应的DNS解析结果,若是找到且没有过时则中止搜索解析到此结束。
在Linux中能够经过/etc/hosts文件来设置域名解析的IP地址。浏览器会首先使用这个IP地址。当解析到这个域名时,操做系统会在自身的DNS缓存中缓存这个结果
3、本地区域名服务器解析(LDNS)
若是在hosts文件中没有找到对应的条目,浏览器会发起一个DNS的系统调用,向本地配置的首选DNS服务器(LDNS通常是电信运营商提供)发起域名解析请求。经过UDP协议向DNS的53端口发起递归请求,运营商的DNS服务器必须提供咱们该域名的IP地址。
大约80%的域名解析都到这里就已经完成了,因此LDNS主要承担了域名的解析工做。运营商的DNS服务器首先查找自身的缓存,找到对应的条目,且没有过时,则解析成功。
4、请求根域名服务器(Root Server)
若是LDNS没有找到对应的条目,运营商的DNS发起一系列迭代DNS解析请求。首先向根域名服务器(根域名. 内置13个根域DNS的IP地址)发起请求。
五、根域名服务器向LDNS服务器返回所查询的主域名服务器地址
主域名服务器(gTLD),是国际顶级域名服务器(包含.com、.cn、.org等),全球只有13台。根域发现这是一个顶级域com域的一个域名,因而就告诉运营商的DNS我不知道这个域名的IP地址,可是我知道com域的IP地址,你去找它去。
6、本地域名服务器向主域名服务器发送请求。
因而运营商的DNS就获得了com域的IP地址,又向com域的IP地址发起了请求(请问www.google.com这个域名的IP地址是多少?),com域这台服务器告诉运营商的DNS我不知道www.google.com这个域名的IP地址,可是我知道google.com这个域的DNS地址,你去找它去。
七、gTLD服务器返回此域名对应的管理方域名服务器(Name Server)的地址
Name Server是你注册的域名服务器,你在某个域名服务提供商申请了域名,那么这个域名解析任务就由这个域名提供商完成。
八、Name Server域名服务器会查询存储的域名和IP的映射关系表,
正常状况下都根据域名获得目标IP记录,连同一个TTL值返回给DNS Server域名服务器。
因而本地区域名服务器的DNS又向google.com这个域名的DNS地址发起请求(请问www.google.com这个域名的IP地址是多少?)这个时候google.com域的DNS服务器一查,果然在我这里
九、返回该域名对应的IP和TTL值
Local DNS Server会缓存这个域名和IP的对应关系,缓存的时间由TTL值控制。
而后把找到的结果发送给运营商的DNS服务器
十、把解析的结果返回给用户
这个时候运营商的DNS服务器就拿到了www.google.com这个域名对应的IP地址。
用户根据TTL值缓存在本地系统缓存中,域名解析过程结束。
超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协做式和超媒体信息系统的应用层协议。HTTP是万维网的数据通讯的基础。
一、Get是从服务器上获取数据,Post是向服务器发送数据。
二、Get传送的数据量小,不能大于2KB;Post传送的数据量较大,通常被默认为不受限制。注:get自己是没有限制大小的,因为get的参数都是拼接在url上,由于浏览器的限制,才限制在2KB
三、根据HTTP规范,GET用于信息获取,并且应该是安全的和幂等的。
关于http协议,写起来又是一长篇巨著,待我往后有空补充。