【计算机网络】OSI与TCP/IP

【计算机网络】OSI与TCP/IP
OSI:Open System Interconnect开放系统互连参考模型,是个灵活的、稳健的和可互操作的模型,并不是协 议,常用来分析和设计网络体系结构。

1、应用层

应用层的任务是通过进程间的交互来完成特定网络应用。应用层协议定义的是应用进程间的通信和交互规则,比如域名系统DNS(53)、支持万维网应用的HTTP(80)协议、支持电子邮件的SMTP(25)协议、邮局协议第三版POP3(110)、文件传输协议FTP等。应用层交互的数据单元是报文。

域名

域名系统DNS:作为一个可以将IP地址和域名(比如:http)相互映射的一个分布式数据库,能够使人更加方便的访问互联网,而不是记住IP数串。比如域名:www.baidu.com

任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名字,即域名(domain name)

域名结构:以百度域名为例:www.baidu.com,分别是三级域名.二级域名.顶级域名,每个域名都有标号序列组成,各标号之间用小数点隔开,标号可以是英文和数字,每个标号不超过63个字符,多个标号组成的完整域名总共不超过255个字符。级别最低的域名写在最左边,而级别最高的字符写在最右边。
【计算机网络】OSI与TCP/IP

域名服务器:一个服务器所负责管辖(或有权限)的范围叫做区(zone),每一个区设置相应的权限域名服务器,用来保存该区中的所有主机到域名IP地址的映射。

根域名服务器:最高层次的域名服务器,也是最重要的域名服务器。所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址。不管是哪一个本地域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先求助根域名服务器。需要注意的是,在很多情况下,根域名服务器并不直接把待查询的域名直接解析出IP地址,而是告诉本地域名服务器下一步应当找哪一个顶级域名服务器进行查询。

域名解析过程:
一、主机向本地域名服务器的查询一般都是采用递归查询。所谓递归查询就是:如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其它根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。因此,递归查询返回的查询结果或者是所要查询的IP地址,或者是报错,表示无法查询到所需的IP地址。

二、本地域名服务器向根域名服务器的查询的迭代查询。迭代查询的特点:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地服务器进行后续的查询。根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的IP地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。最后,知道了所要解析的IP地址或报错,然后把这个结果返回给发起查询的主机。

示例:dig +trace www.baidu.com
①本机向local dns请求www.baidu.com
②local dns向根域请求www.baidu.com,根域返回com.域的服务器IP
③向com.域请求www.baidu.com,com.域返回baidu.com域的服务器IP
④向baidu.com请求www.baidu.com,返回cname www.a.shifen.com和a.shifen.com域的服务器IP
⑤向root域请求www.a.shifen.com
⑥向com.域请求www.a.shife.com
⑦向shifen.com请求
⑧向a.shifen.com域请求
⑨拿到www.a.shifen.com的IP
⑩localdns返回本机www.baidu.com cname www.a.shifen.com 以及 www.a.shifen.com的IP
【计算机网络】OSI与TCP/IP

http协议:超文本传输协议(HyperText Transfer Protocol)是一种应用广泛的网络协议,设计HTTP最初的目的是提供一种发布和接收HTML页面的方法。

2、运输层

运输层主要任务是负责两台主机进程之间的通信提供通用的数据传输服务。应用进程利用该服务传送应用层报文。通用并不针对某一特定的网络应用,而是多种应用可以使用同一个运输层服务。由于一台主机可以同时运行多个线程,因此运输层有复用和分用的功能。复用:指多个应用进程间可同时使用下面运输层的服务。分用是指运输层把收到的信息分别交付上面应用层的相应进程。
两种协议:

  • TCP(传输控制协议)提供一种面向连接的、可靠的、基于字节流的数据传输服务;
  • UDP(用户数据协议)提供无连接的、不可靠的、基于报文的数据传输服务;

问题一:TCP与UDP的区别

问题二:TCP是如何保证可靠性的?

3、网络层(IP层)

网络层的主要任务是选择合适的网间路由和交换节点,确保数据及时传送,也就是点到点的传输(点指主机或者路由器)。在发送数据时,网络层把运输层产生的报文段或者用户数据报封装成分组和包进行发送。分组也叫IP数据报,简称数据报
网络地址:两部分组成——网络地址(全局唯一)和主机地址。
路由寻址:
1、通过路由选择算法为分组通过通信子网选择最佳路由;
2、实现路由选择、拥塞控制、网络互联等;

拥塞控制:描述的是真个网络的状态,对网络整体的检测,防止过多的数据同时堆积在网络中,主要方法有慢开始、拥塞避免、快重传和快恢复
流量控制:通过滑动窗口实现,控制双方的传送速率在双方的接受范围内。比如滑动窗口协议。

IP协议

IP协议是TCP/IP协议的核心,所有的TCP,UDP,IMCP,IGCP的数据都以IP数据格式传输。要注意的是,IP不是可靠的协议,这是说,IP协议没有提供一种数据未传达以后的处理机制。
数据格式:
【计算机网络】OSI与TCP/IP
IP数据报的首部长度和数据长度是可变长的,总体上是4字节的整数倍。
Ip路由选择:

  1. 如果IP数据包的TTL(生命周期)已到(已经被减为0),则该IP数据包就被抛弃。
  2. 搜索路由表,优先搜索匹配主机,如果能找到和IP地址完全一致的目标主机,则将该包发向目标主机
  3. 搜索路由表,如果匹配主机失败,则匹配同子网的路由器,这需要“子网掩码(1.3.)”的协助。如果找到路由器,则将该包发向路由器。
  4. 搜索路由表,如果匹配同子网路由器失败,则匹配同网号路由器,如果找到路由器,则将该包发向路由器。
  5. 搜索路由表,如果以上都失败了,就搜索默认路由,如果默认路由存在,则发包
  6. 如果都失败了,就丢掉这个包。
    子网寻址:主机号可以分为,网络号+主机号或者网络号+子网号+主机号,比如一个B类地址:210.30.109.134,网络号210.30,子网号109,主机号134,其子网掩码为255.255.255.0,由于子网掩码24位,则主机为8位。

ARP协议

主要负责将IP地址解析为MAC地址,工作原理:
1)ARP缓存表直接封装MAC
每台主机都维护一个ARP缓存表(可以用arp -a命令查看),当源主机要发送一个IP包的时候,会首先查一下自己的ARP高速缓存(就是一个IP-MAC地址对应表缓存)。如果主机A想发送数据给主机B,主机A首先会检查自己的ARP缓存表,查看是否有主机B的IP地址和MAC地址的对应关系。如果有,则会将主机B的MAC地址作为源MAC地址封装到数据帧中。
2)ARP缓存没有IP-MAC, 则向网络发送一个ARP协议广播包
如果查询的IP-MAC值对不存在,那么源主机就向网络发送一个ARP协议广播包,这个广播包里面就有待查询的IP地址。主机A则会发送一个ARP请求信息,请求的目标IP地址是主机B的IP地址(比如询问“IP地址是192.168.1.2的主机的硬件地址是多少”),目标MAC地址是MAC地址的广播帧(即FF-FF-FF-FF-FF-FF),源IP地址和MAC地址是主机A的IP地址和MAC地址。
3)交换机向非接收的所有接口发送出去
当交换机接受到此数据帧之后,发现此数据帧是广播帧,因此,会将此数据帧从非接收的所有接口发送出去。
4) 接收的主机检查自己的IP和mac地址,匹配则发送一个ARP包
直接收到这份广播的包的所有主机都会查询自己的IP地址,如果收到广播包的某一个主机发现IP地址与本机相符,那么就准备好一个包含自己的MAC地址的ARP包传送给发送ARP广播的源主机,而广播源主机拿到ARP包后会更新自己的ARP缓存(就是存放IP-MAC对应表的地方)
5)发送广播的主机就会用新的ARP缓存数据准备好数据链路层的的数据包发送工作
主机A在收到这个回应的数据帧之后,在自己的ARP缓存表中记录主机B的IP地址和MAC地址的对应关系。而此时交换机已经学习到了主机A和主机B的MAC地址了

IP地址和字段

IPv4地址长度4个字节,32位,分为网络号和主机号。
网络号:保证相互连接的两个网段具有不同标识
主机号:同一网段内,主机之间具有相同的网络号,主机号必须不同。

网段:一种是指物理上由网络连接设备所相隔的网络;比如由路由设备(或者交换机,甚至集线器)连接的两个局域网,我们可以称之为两个网段。另一种是指从逻辑上,根据其IP地址中的网络地址来区分其所属的网段,若子网掩码为255.255.255.0,则Ip地址前三位相同则是同一个网段
【计算机网络】OSI与TCP/IP
参考:网络层

4、数据链路层

在两个相邻结点之间传送数据时,数据链路层将网络层交下来的IP数据包组装成帧,在两个相邻结点间的链路上传送帧。每一帧包括数据和必要的控制信息。
点到点信道的数据链路层协议的数据单元为帧:

  1. 将网络层交下来的IP数据报添加首部尾部封装成帧;——帧定界,用以判断帧的完整性(有最大传送单元MTU)
  2. 将封装好的帧发送给接受方的数据链路层;——透明传输

透明传输:表示帧的开始(SOH)与帧的结束(EOT)虽然是ASCII码不可打印的控制字符,但是其二进制码依然可能与数据报中的数据二进制码一致造成帧的提前结束,透明传输则是用来解决这一问题的。具体方法则是:在数据中出现控制字符前插入转义字符“ESC”,接收方接收到在发往网路层前删去。如果前刚好有一个转义字符,则再插入一个转义字符,后删掉最前面的即可;

  1. 收到的帧无差错则从中提取到IP数据报交给网络层,否则丢弃;——差错控制

差错检测和纠正

检错码:
1、奇偶;
2、检验和;
3、循环冗余检验(CRC),也叫多项式编码,基本思想是:将位看成是系数为0或1的多项式。一个k位帧可以看成是一个k-1次多项式的系数列表,该多项式共有k项,从xk−1到x0,这样的多项式认为是k-1阶多项式。最左边是xk−1项的系数。
4、使用多项式编码时,发送方和接收方必须事先商定一个生成多项式(generatorpolynomial) G(x).生成多项式的最高位和最低位必须是1.

纠错码:
1、海明码:两个码字中不相同位的个数
2、二进制卷积码:在卷积码中,编码器处理一个输入序列,并生成一个输出序列。卷积吗由其速率和约束长度标识
3、里德所罗门码 :线性码,多项式纠错
4、低密度奇偶校验码(LDPC,Low-Density Parity Check )

1、物理层

物理层的作用是实现相邻计算机结点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。在物理层传送的数据单位是比特
【计算机网络】OSI与TCP/IP