网络通信协议——OSI七层协议

osi七层协议

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

###应用层

自定义协议

1 两大组成部分,头部 + 数据 头部,放对数据的描述信息,目标地址,数据类型,长度等 数据,想要发的数据 2 头部长度必须一致

###表示层 ###会话层 ###传输层

传输层:TCPudp

传输层功能:建立端口到端口的通信 报头:包含源端口和目的端口等。

补充:端口范围0-65535,0-1023为系统占用端口

tcp协议:

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

udp协议:

不可靠传输,”报头”部分一共只有8个字节,总长度不超过65,535字节,正好放进一个IP数据包。 基于端口port :基于网络通信的应用程序,才有端口 0-1023 是系统占用端口

TCP协议必须建立一个双向通信的连接

三次握手

请求,确认并请求,确认

四次挥手

c传好数据了,请求断开连接 s确认断开 s传好数据了,请求断开连接 c确认断开

TCP是可靠协议 发送数据等对方确认后,才算完成,才会将内存中的数据清理掉

udp,不需要建立连接,也不需要对方确认,不可靠协议

半连接:缓冲室 DHCP:局域网的网络,协议,可以动态分配IP地址

###网络层
IP协议: 规定网络地址的协议叫ip协议,它定义的地址称之为ip地址,广泛采用的v4版本即ipv4,它规定网络地址由32位2进制表示 范围0.0.0.0-255.255.255.255 一个ip地址通常写成四段十进制数,例:172.16.10.1 ip地址分成两部分

网络部分:标识子网 主机部分:标识主机 注意:单纯的ip地址段只是标识了ip地址的种类,从网络部分或主机部分都无法辨识一个ip所处的子网,区分子网的方式,利用子网掩码 将ip地址与子网掩码尽心按位与运算,得到结果一样,就是同一局域网。不一样,就不是。

例:172.16.10.1与172.16.10.2并不能确定二者处于同一子网

ip数据包 ip数据包也分为head和data部分,无须为ip包定义单独的栏位,直接放入以太网包的data部分 报头 + 数据; 报头 由 源地址和目标地址 组成。为IP地址。 ###数据链路层
数据链路层的功能:定义了电信号的分组方式以太网协议:

早期的时候各个公司都有自己的分组方式,后来形成了统一的标准,即以太网协议ethernet 报头 + 数据,报头包括 源地址和目标地址,为Mac地址,每个网卡都是唯一确定的

###物理层
物理层功能:主要是基于电器特性发送高低电压(电信号),高电压对应数字1,低电压对应数字0

mac地址: head中包含的源和目标地址由来:ethernet规定接入internet的设备都必须具备网卡,发送端和接收端的地址便是指网卡的地址,即mac地址 mac地址:每块网卡出厂时都被烧制上一个世界唯一的mac地址,长度为48位2进制,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线号)

广播: 有了mac地址,同一网络内的两台主机就可以通信了(一台主机通过arp协议获取另外一台主机的mac地址) ethernet采用最原始的方式,广播的方式进行通信,即计算机通信基本靠吼

##基础名词知识哦(重要)

###ip地址

公网IP和私网IP
Public IP: 公共 IP ,经由 INTERNIC 所统一规划的 IP,有这种 IP 才可以连上 Internet ;
Private IP : 私有 IP 或保留 IP,不能直接连上 Internet 的 IP ,主要用于局域网络内的主机联机规划。

我们能够上网靠的是isp组织分给我们的IP地址,但是这个IP地址一般不是给个人的,一般都是给一个单位,一个区域的,也就是说我们实际上能接触到的一般都是私有地址,即我们用ipconig查到的都是私有地址,也就相当于局域网内的ip地址,当我们真正联网时,会先把数据发送到路由,然后再由路由进行处理实现真正的联网操作,路由的地址才是真正联网的IP地址,也就是pubilc IP,而我们在自己电脑上查到的都是私有IP

我们重新整理一下我们上网的路线,看下图,移动公司分给我们的ip是117.158.134.217,这是我们这一栋楼能连上网的公网IP,那么如何让这一个ip使学校里面的所有人都能使用呢,我们开始重新划分局域网。上文中,我们知道B类私有地址范围是:172.16.0.0~172.31.255.255,我们学校采取的就是这种划分方法,所以我的私网IP地址就是172.18.251.129.那么怎么连上网的呢,我们通过私网ip然后把我们的需求和要发送的数据发给路由器,路由器需要用NAT网络地址转换技术将私有IP转化为公网IP然后路由器对接网络,再把数据发送给Internet.然后internet发送数据到我们学校的路由,然后路由在通过我的私网ip发送给我,这就是我们真实上网的流程。

###子网掩码

子网掩码用来判断,两个IP是否是一个网络里的,如果是直接通过ARP协议获取Mac地址进行传输,如果不是,就将数据传输给网关,获得网关的Mac地址,网关(比如说,路由)把私网IP转为公网IP,进行传输。

###Mac地址

讲到MAC地址,就不得不提ip地址。虽然现在已经ipv6了,但我们基本用的大多数还是ipv4协议,所谓ip就是你电脑整个网络的编号。其他电脑想访问电脑就得需要这个编号。但是这个编号很多情况下是一直在变化的,而唯一不变的是你的MAC地址:物理地址。

MAC是网络中用来标识网卡设备的唯一网络地址。由相关硬件制造商统一分配,每台电脑的MAC地址都是唯一的。

做个比喻,你经常搬家,你没搬一次家都有一个地址,XX小区XX单元XX号,这个就是IP。但是你的名字不变,这个就是MAC,不同的是我们的MAC不允许重名。

###网关

在没有路由器的情况下,不同的两个网络之间是不能进行TCP/IP通信的,即使是两个网络连接在同一台交换机(或集线器)上,TCP/IP协议也会根据子网掩码(255.255.255.0)判定两个网络中的主机处在不同的网络里。而要实现这两个网络之间的通信,则必须通过网关。

默认网关指计算机所在网络边界的网关或路由器,因为只有网关和路由器才知道如何到达其他网络。
对于网络内部的计算机来说,只有知道了默认网关的位置才能和网络外部通信。
所以默认网关是一个很重要的设置。但大多数情况下不需要我们手动设置,因为网络中的DHCP服务器可以自动提供默认网关的位置。
    对于使用宽带路由器共享上网,默认网关是宽带路由器。
    对于拨号上网,默认网关是是运营商处的路由器。
    对于网络中有启用了ICS(Internet连接共享)的计算机并共享上网,默认网关就是这台计算机。

网关的作用
     1.网关在所有内网计算机访问的不是本网段的数据时使用
     2.网关负责将内网ip转化为公网IP,公网Ip转化为内网IP。

###ARP协议

注意:
ARP协议是和以太网配套使用的,如果你的局域网的底层实现并不是以太网(比如令牌环网、HDDI等),那么你可能压根就不需要ARP请求!

从始至终,IP协议只处理与IP地址有关的部分;
ARP协议只处理查询MAC地址;
802.3链路层协议只负责MAC-MAC之间的实际传送;
这就是网络分层,各司其职。

最后,你问我TCP发出SYN请求和ARP广播谁先,当然是SYN请求在先了!但是如果没有ARP广播SYN请求还不是纸上谈兵?所以问谁先谁后是没有意义的,分清楚谁是boss、谁是小弟就好了。

###DNS

DNS的获取流程

DNS是应用层协议,事实上他是为其他应用层协议工作的,包括不限于HTTP和SMTP以及FTP,用于将用户提供的主机名解析为IP地址。

具体过程如下:
1、在浏览器中输入www . qq .com 域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。


2、如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。


3、如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/ip参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。


4、如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。


5、如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(http://qq.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找http://qq.com域服务器,重复上面的动作,进行查询,直至找到www . qq .com主机。


6、如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管是本地DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。


从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间就是的交互查询就是迭代查询。

##网络通信流程

想实现网络通信,每台主机需具备四要素

本机的IP地址 子网掩码 网关的IP地址 DNS的IP地址

1.本机获取

本机的IP地址:192.168.1.100 子网掩码:255.255.255.0 网关的IP地址:192.168.1.1 DNS的IP地址:8.8.8.8 2.打开浏览器,想要访问Google,在地址栏输入了网址:www.google.com。 URL :定位资源地址 应用层协议:HTTP,域名加端口,文件地址 3.dns协议(基于udp协议)

13台根dns:

A.root-servers.net198.41.0.4美国 B.root-servers.net192.228.79.201美国(另支持IPv6) C.root-servers.net192.33.4.12法国 D.root-servers.net128.8.10.90美国 E.root-servers.net192.203.230.10美国 F.root-servers.net192.5.5.241美国(另支持IPv6) G.root-servers.net192.112.36.4美国 H.root-servers.net128.63.2.53美国(另支持IPv6) I.root-servers.net192.36.148.17瑞典 J.root-servers.net192.58.128.30美国 K.root-servers.net193.0.14.129英国(另支持IPv6) L.root-servers.net198.32.64.12美国 M.root-servers.net202.12.27.33日本(另支持IPv6)

域名定义:http://jingyan.baidu.com/article/1974b289a649daf4b1f774cb.html

顶级域名:以.com,.net,.org,.cn等等属于国际顶级域名,根据目前的国际互联网域名体系,国际顶级域名分为两类:类别顶级域名(gTLD)和地理顶级域名(ccTLD)两种。类别顶级域名是         以"COM"、"NET"、"ORG"、"BIZ"、"INFO"等结尾的域名,均由国外公司负责管理。地理顶级域名是以国家或地区代码为结尾的域名,如"CN"代表中国,"UK"代表英国。地理顶级域名一般由各个国家或地区负责管理。

二级域名:二级域名是以顶级域名为基础的地理域名,比喻中国的二级域有,.com.cn,.net.cn,.org.cn,.gd.cn等.子域名是其父域名的子域名,比喻父域名是abc.com,子域名就是www.abc.com或者*.abc.com. 一般来说,二级域名是域名的一条记录,比如alidiedie.com是一个域名,www.alidiedie.com是其中比较常用的记录,一般默认是用这个,但是类似*.alidiedie.com的域名全部称作是alidiedie.com的二级

4.HTTP部分的内容,类似于下面这样:

GET / HTTP/1.1 Host: www.google.com Connection: keep-alive User-Agent: Mozilla/5.0 (Windows NT 6.1) …… Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8 Accept-Encoding: gzip,deflate,sdch Accept-Language: zh-CN,zh;q=0.8 Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3 Cookie: … …

我们假定这个部分的长度为4960字节,它会被嵌在TCP数据包之中。

5 TCP协议

TCP数据包需要设置端口,接收方(Google)的HTTP端口默认是80,发送方(本机)的端口是一个随机生成的1024-65535之间的整数,假定为51775。

TCP数据包的标头长度为20字节,加上嵌入HTTP的数据包,总长度变为4980字节。

6 IP协议

然后,TCP数据包再嵌入IP数据包。IP数据包需要设置双方的IP地址,这是已知的,发送方是192.168.1.100(本机),接收方是172.194.72.105(Google)。

IP数据包的标头长度为20字节,加上嵌入的TCP数据包,总长度变为5000字节。

7 以太网协议

最后,IP数据包嵌入以太网数据包。以太网数据包需要设置双方的MAC地址,发送方为本机的网卡MAC地址,接收方为网关192.168.1.1的MAC地址(通过ARP协议得到)。

以太网数据包的数据部分,最大长度为1500字节,而现在的IP数据包长度为5000字节。因此,IP数据包必须分割成四个包。因为每个包都有自己的IP标头(20字节),所以四个包的IP数据包的长度分别为1500、1500、1500、560。

8 服务器端响应

经过多个网关的转发,Google的服务器172.194.72.105,收到了这四个以太网数据包。

根据IP标头的序号,Google将四个包拼起来,取出完整的TCP数据包,然后读出里面的”HTTP请求”,接着做出”HTTP响应”,再用TCP协议发回来。

本机收到HTTP响应以后,就可以将网页显示出来,完成一次网络通信。

##博客内容,为各处复制,整理的

原文地址:https://www.cnblogs.com/pythonwl/p/12715070.html