面试题-网络编程
网络编程
网络分层
为什么分层?
计算机网络是个非常复杂的系统,相互通信的两个计算机必须高度协调工作,但是这种协调是很复杂的。
分层可以将庞大复杂的问题,转化成若干个较小的局部问题,这些局部的较小的问题就比较易于研究和处理。
优缺点
优点:
- 各层之间是独立的,不用关心其他层次的内容;
- 灵活性好,任何一层发生变化不影响上下层;
- 架构上可分割开,各层可用最好的技术实现;
- 易于实现和维护,仅需维护独立的子系统;
- 能促进标准化的工作,每层的功能,提供的服务有了精确的说明。
缺点:
- 降低效率;
- 有些功能会在不同的层次中反复出现,因而产生了额外的开销。
计算机网络分层
OSI 的七层协议体系结构的概念清楚,理论也较完整,但它既复杂⼜不实⽤。
TCP/IP 是四层体系结构:应⽤层、运输层、⽹际层和⽹络接⼝层。但最下⾯的⽹络接⼝层并没有具体内容。
所谓的五层协议的网络体系结构其实是为了方便学习计算机网络原理而采用的,综合了OSI七层模型和TCP/IP的四层模型而得到的五层模型。
五层协议体系结构:
- 应用层:通过应⽤进程间的交互来完成特定⽹络应⽤;例如 DNS、HTTP、SMTP。
- 运输层:负责向两台主机中进程之间的通信提供通⽤的数据传输服务,TCP提供⾯向连接的、可靠的数据传输服务,传输单位为报⽂段;UDP提供⽆连接的数据传输服务,传输单位为⽤户数据报;
- 网络层:提供主机间的通信服务。路由器⽣成转发表,依据转发表转发分组⾄下⼀个路由器;
- 数据链路层:直连⽹络中相邻节点的链路上传输帧,物理层的线路有传输介质与通信设备组成,比特流在传输介质上传输时肯定会存在误差的。这样就引入了数据链路层在物理层之上,采用差错检测、差错控制和流量控制等方法,向网络层提供高质量的数据传输服务;
- 物理层:实现比特传输,物理层的线路有传输介质与通信设备组成。
TCP & UDP
区别
- TCP传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。
- UDP用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。
1
2
3
4
51)TCP是面向连接的,UDP是面向无连接的
2)UDP程序结构较简单
3)TCP是面向字节流的,UDP是基于数据报的
4)TCP保证数据正确性,UDP可能丢包
5)TCP保证数据顺序到达,UDP不保证
优缺点
- TCP
- 优点:可靠稳定
TCP的可靠体现在TCP在传输数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完之后,还会断开来连接用来节约系统资源。 - 缺点:慢,效率低,占用系统资源高,易被攻击
在传递数据之前要先建立连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞机制等都会消耗大量时间,而且要在每台设备上维护所有的传输连接。然而,每个连接都会占用系统的CPU,内存等硬件资源。因为TCP有确认机制、三次握手机制,这些也导致TCP容易被利用,实现DOS、DDOS、CC等攻击。
- UDP
- 优点:快,比TCP稍安全
UDP没有TCP拥有的各种机制,是一种无状态的传输协议,所以传输数据非常快,没有TCP的这些机制,被攻击利用的机会就少一些,但是也无法避免被攻击。 - 缺点:不可靠,不稳定
因为没有TCP的这些机制,UDP在传输数据时,如果网络质量不好,就会很容易丢包,造成数据的缺失。
应用场景
- TCP:传输一些对信号完整性,信号质量有要求的信息。
- UDP:对网络通讯质量要求不高时,要求网络通讯速度要快的场景。
TCP为什么是可靠连接?
因为tcp传输的数据满足3大条件,不丢失,不重复,按顺序到达。
总结
TCP | UDP | |
---|---|---|
是否连接 | 面向连接 | 无连接 |
是否可靠 | 可靠 | 不可靠 |
连接对象个数 | 只能一对一 | 支持一对一、一对多、多对一、多对多交互通信 |
传输方式 | 面向字节流 | 面向报文 |
首部开销 | 最小20字节,最大60字节 | 8字节 |
适用场景 | 可靠传输,例如文件传输 | 实时应用,例如视频会议、直播 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Star!