1.OSI分层也几个层的作用
OSI分七层,自下而上,依次是:
物理层,包括物理联网媒介,如电缆,网线等。数据格式是比特流。
数据链路层,控制物理层和网络层间的传输。功能是如何在不可靠的物理线路上可靠的传递,将物理层数据封装成帧,提供错误校验,并通过MAC寻址。
网络层,主要是将网络地址IP翻译成物理地址MAC,使用数据格式包,并决定发送的路由路线。
传输层,数据格式为段,实现不同主机间的进程的通信,包括可靠TCP与不可靠UDP,错误校验,流量控制。
会话层,用于网络中两个节点建立,维持,终止连接。传输的直接是数据。
表示层,将应用程序使用的数据格式化成网络所能理解的,如数据,链接的加密解密,图片,文件的编码和解码。
应用层,为用户提供程序接口以使用网络服务,服务包括FTP,邮件SMTP等。
2.TCP/IP有那几层?每层所使用的协议
应用层,文件传输协议FTP,邮件传输协议SMTP,网络远程访问协议Telnet。
传输层,TCP,UDP。
网络层,网际协议IP,ICMP,ARP。
接口层(物理层和数据链路层),HDLC,PPP等。
3.硬件(MAC)地址的概念和作用
MAC是电脑的物理地址,用于局域网的传输。在局域网内,交换机通过MAC来寻址。
4.ARP协议概念和算法
ARP用于网络层,地址解析协议,根据IP地址解析出对应的MAC地址。当主机A需要想主机B发送数据时,解析流程如下:
根据主机A的路由表,确定主机B的IP,并根据ARP缓存判断是否有B的匹配的MAC地址,如果没有执行2
主机A去访问主机B的IP的硬件地址,然后本地网络中广播ARP请求,本地主机收到ARP请求后检查,如果不符就丢弃请求。
主机B确定ARP请求中的IP和自己的IP一致,将主机A的IP和MAC的映射添加到ARP缓存。并且回复主机A一个ARP消息。
主机A收到主机B的ARP消息后,将主机B的IP和ARP映射关系添加进ARP缓存,并开始通信。ARP缓存结束后,重新执行上述步骤。
5.CRC冗余校验算法,IP和校验算法
CRC百科说的很清楚,IP和校验是用来保证IP包头的完整性。发送方首先将校验和字段置为0,然后将IP包头按16位比特大小分成多个单元,不够的补0,对每个单元采用反码和运算,即求反码相加,高位益出的添加到低位。将得到的结果的反码写入校验和。
接收方将IP包头按16位分成多个单元,不足的补0,然后计算反码和,并将结果与校验和字段相加,如果结果每一位都是1,则传输无误,否则说明传输出现问题。
6.如何实现透明传输
一是在设计上透明,例如网络的分层,层与层之间相互独立,相互调用。一是在用户使用上,例如借口,socket中的send(), recv()函数。
7.各个层使用的交换设备
物理层有集线器,网卡,数据链路层有网桥,交换机,网络层有路由器,传输层及更高的层使用网关。
8.路由表的内容
路由器的工作主要就是为经过的数据选择一条合适的路线来传递。包括静态路由表和动态路由表,静态路由表是事先设定好的,动态路由表会根据网络情况动态调节。路由表一般包括:
网络ID,目标网络的IP地址
子网掩码,用来判断IP所属网络段
下一跳地址,数据发送到目标地址时的下一个网络地址
接口,数据包转发到网络ID时所使用的网络接口,是一个端口号或者逻辑标识符
跳数,路由跳转次数
路由服务质量
9.路由分组转发算法
从IP数据包头部取出目的IP地址D,并得到其所在网络N
如果N就是当前路由直接连接的网络,直接发送,否则执行3
如果路由表中有D对应的特定路由器,就把数据发送给所制定的下一跳路由。否则执行4
如果路由表中有到达N的路由,就把数据交给其对应的下一跳路由,否则执行5
如果路由表中有一个默认路由,就把路数据交给默认路由,否则执行6
报告转发分组出错
10.IP报文的格式,各字段的意义
IP包头格式为:
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version| IHL |Type of Service| Total Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identification |Flags| Fragment Offset |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Time to Live | Protocol | Header Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
前5行是必选的,所以IP包头最小要20字节。
Version(版本),4位,0100是Ipv4,0110是Ipv6.
IHL(报头长度),4位,用来表示32的倍数,如果是5,说明长度为32*5=160,20字节。
Type of Service(服务类型),8位,前三位代表优先权,后面依次代表 延迟,吞吐量,可靠性,开销,保留。每个占用一位。
Total Length(总长度),16位,表示数据报的总长度,因此最长不超过65535.
Identification(标识符),16位;Flags(标记字段),3位,Fragment offset(分段偏移),13位。三者一起使用,用于数据包的分段。
TTL(生存时间),为防止数据包在网络上永久存在,8位,最大值255,每经过一台路由减1.
Protocol(协议),8位,制定了数据包的信息类型。
Header Checksum(报头校验和),用于IP报头纠错检测。
Source Address(源地址),数据发送方的IP地址,32位。
Destination Address(目标地址),32位,目标IP地址。
Options(可选字段),用来定义一些自定义选项,供测试用。32位,长度必须是32的整数,不足32位补0.