讲一下为什么要分层?
- 各层之间是相互独立的 *** 将大问题分割成小问题,易于实现
- 灵活性好 *** 各个层发生变化,只要接口不变,就不会影响其他层
- 结构上可分开
- 易于实现和维护
- 能促进标准化工作 *** 分层后可以进行复用, 用户只关心用到的应用层,其他层就可以复用
讲某一层的功能?/《计算机网络第五版》第1,2,3,4章
(1) 数据链路层 :完成两个相邻结点设备之间的可靠传输,数据链路层有一个MAC地址,也成为物理地址,是48位的,其中的协议包括地址解析协议(ARP)[ IP地址à 物理地址] 和逆地址解析协议(RARP)[ 物理地址à IP地址]
(2) 网络层 : 网络层实现了数据包的选路和转发,选路选择好以后将数据从当前结点转发到选择好的结点[ 传输层: 报文 分组:网络层 数据链路层 : 数据帧] ,网络层的任务就是选择中间节点,以确定两台主机之间的通信路径 [ TTL:包的生存时间 默认为64 ,表示一个包最多在网络中走64跳]
icmp 因特网控制报文协议,ping 命令底层的实现就是使用了icmp ,测试两个主机之间连接是否正常
CRC (循环冗余校验)
(3) 传输层 : 为两台主机上的应用程序提供端到端的通信,为进程间通讯 TCP(传输控制协议)/UDP(用户数据包协议) SCTP( 流控制传输协议)
(4) 应用层 : 使用传输层提供的 http / 用户自定义协议(jsoncpp) / ftp
讲一下TCP和UDP协议?
TCP与UDP区别:
1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接;
2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付;
3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的;UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等);4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信;
5、TCP首部开销20字节;UDP的首部开销小,只有8个字节;
6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道,整体来看UDP开销较小。
什么时候选择TCP/UDP
实时性 : UDP
可靠性 : TCP
简单来说,TCP一般用于文件传输(对数据准确性要求高,速度可以相对慢),发送或接收邮件(POP IMAP SMTP 对数据准确性要求高,非紧急应用),远程登录(TELNET SSH 对数据准确性有一定要求,有连接的概念)等等;UDP一般用于即时通信(QQ聊天 对数据准确性和丢包要求比较低,但速度必须快),
在线视频(RTSP 速度一定要快,保证视频连续,但是偶尔花了一个图像帧,人们还是能接受的),网络语音电话(VoIP 语音数据包一般比较小,需要高速发送,
偶尔断音或串音也没有问题)等等。
TCP还可以用于网络数据库,分布式高精度计算系统的数据传输;
UDP可以用于服务系统内部之间的数据传输,因为数据可能比较多,内部系统局域网内的丢包错包率又很低,即便丢包,顶多是操作无效,这种情况下,UDP经常被使用