网络基础2——包含网络部分全部概念(一定要掌握,面试考点)

tcp/ip5层模型:应用层,传输层,网络层,链路层,物理层
【面试题】谈谈tcp和udp的区别
一、应用层
1.应用层的概念:负责应用程序之间的数据沟通。在应用层的程序都是我们程序员自己写的程序。
2.数据的序列化和反序列化:数据进行可持续化存储时,数据的组织就是序列化。
3.知名协议http
http的全称:超文本传输协议
应用层的协议都是自定制协议,但是因为有些大佬们写的自定制协议使用的人多了就称为了知名协议了。
(1)url:网址(统一资源定位符)
在这里插入图片描述
因为http的url中特殊字符一般都有特殊含义,因此我们根据提交的查询字符中不能随意出现特殊字符,就需要对特殊字符进行转义。
注意:http是一个明文传输协议——传输层使用tcp协议
(2)http的协议格式(一定要记住)
在这里插入图片描述
(3)http服务端:
明文传输(以明文字符串形式组织协议)
http传输层使用tcp协议
http协议格式
(4)GET/POST区别
get:没有正文,提交的数据在url中;都是用于请求获取资源。
post:有正文,提交的表单数据;都是用于请求获取资源。
二、传输层
负责端与端之间的数据传输,其中这个端就是连接服务器的端口,端口唯一标识一个进程。
1.传输层的协议格式
(1)udp协议:无连接、不可靠、面向数据包
缺点:无法保证数据安全传输
优点:速度快,不会有粘包问题
【面试】http协议用的是多少端口?
答:首先在应用层根本不涉及到端口,http是应用层协议它并不涉及到端口,如果说http端口的话,那是因为http在传输层使用的是tcp协议,而在传输层它使用的是80端口。
在这里插入图片描述
【面试】协议中的长度:dup数据包长度,因为有这个长度,因此udp每条数据之间都有明显的边界,因此不会出现数据粘包的问题,但是udp每个数据包的长度是有限制的,不能超过64k,因为在udp的头部中uh_len的类型是U_int16_t,是2个字节,2个字节最大长度是64k,它是标记udp数据包的长度的。所以udp在传输书的时候需要先在应用层进行切分,因为udp不可靠传输,所以无法保证安全也无法保证包序,因此如果在应用层进行分段,那么就需要在应用层进行包序的管理。
在这里插入图片描述
检验核:就是检验数据包的完整性核正确性;通过二进制反码求和。
(2)udp数据包的格式
在这里插入图片描述(3)tcp协议(在网络基础2中最重要的知识点)
在这里插入图片描述
【面试】假如三次握手中第三次握手失败了应该怎么处理?
答:服务端如长时间没有收到最后一个ACK,服务端并不会超时发送SYN+ACK,而是直接发送重置连接到客户端。
【面试】(TIME_WAIT为什么主动关闭连接方)TIME_WAIT作用?
答:防止最后的ack丢失导致对端重发的fin包对新起的相同地址端口连接造成影响。因为最后一个ack丢置(或者因为网络不好导致在报文最大周期之内)后,对端没有收到ack,因此重发fin请求。假如没有这个等待时间,而直接重新启动程序,就有可能会接到这个重发的fin包对新连接造成影响。
【面试】为什么是2个MSL时间?
答:第一一个MSL是主动关闭方第一个ack的最大生存周期,第二个MSL重发的fin包在网络上的最大生存周期,如果主动关闭方在两个MSL时间都没有接收到重发的fin请求,就可以关闭了,因为不管ack有没有成功,重发的fin都会消失在网络中。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
【面试】TIME_WAIT保护的是什么方?
答:保护的是主动关闭方。因为主动关闭方在关闭了以后会进入TIME_WAIT状态,保证对方ACK能够到达,防止重发的finish造成影响。
【面试】网络断开或者对端关闭连接,程序如何快速判断连接已经断开?
tcp内部有自己的连接检测机制,检验连接是否正常。
发送端判断:操作系统在连续发送多次数据没有ACK后,认为连接断开,向进程发送SIGPIPE信号,而进程使用默认处理方式(退出进程)。
接收端判断:revc返回0(对端关闭连接,连接断开)。
【面试】tcp/udp的区别?
答:我们分别从tcp和udp的特性、使用场景等来看看它们的区别:
在这里插入图片描述
在这里插入图片描述
【面试】udp如何实现可靠传输?

猜你喜欢

转载自blog.csdn.net/ZhuiZhuDream5/article/details/88343710
今日推荐