1、OSI的七层模式是什么?
OSI模型分为七层,自下而上为:物理层(Physical Layer)、数据链路层(Data Link Layer)、网络层(Network Layer)、传输层(Transport Layer)、会话层(Session Layer)、表达层(Presentation Layer)、应用层(Application Layer)。
2、TCP和UDP的区别是什么?
1)TCP是面向连接的(三次握手;四次挥手),UDP不是面向连接的;
2)TCP是一个重量级的协议;UDP则是轻量级的协议。一个TCP数据报的报头大小最少20字节,UDP数据报的包头固定8个字节;
3)TCP交付保证:如果消息在传输中丢失,那么它将重发;UDP没有交付保证,一个数据包在运输过程中可能丢失。
4)消息到达网络的另一端可能是无序的,TCP协议将为你拍好序。UDP不提供任何有序性的保证。
5)TCP慢,适合传输大量数据;UDP快,适合传输少量数据。
6)TCP有流量控制和拥塞控制,UDP没有。
7)TCP面向字节流,UDP面向报文
8)TCP只能单播,不能发送广播和组播;UDP可以广播和组播。
3、TCP为什么要三次握手,两次不行吗?为什么?
两次握手只能保证单向连接是畅通的。
Step1 A → B : 你好,B。
Step2 A ← B : 收到。你好,A。
这样的两次握手过程, A 向 B 打招呼得到了回应,即 A 向 B 发送数据,B 是可以收到的。
但是 B 向 A 打招呼,A 还没有回应,B 没有收到 A 的反馈,无法确保 A 可以收到 B 发送的数据。
只有经过第三次握手,才能确保双向都可以接收到对方的发送的数据。
Step3 A → B : 收到。
这样 B 才能确定 A 也可以收到 B 发送给 A 的数据。
4、什么是 tcp 粘包?tcp粘包是怎么产生的?如何解决?
1)发送方发送的多个数据包,到接收方缓冲区首尾相连,粘成一包,被接收;
2)原因
TCP 协议默认使用 Nagle 算法可能会把多个数据包一次发送到接收方,应用程序读取缓存中的数据包的速度小于接收数据包的速度,缓存中的多个数据包会被应用程序当成一个包一次读取;
3)处理方法
1)发送方使用 TCP_NODELAY 选项来关闭 Nagle 算法;
2)数据包增加开始符和结束,应用程序读取、区分数据包。
3)在数据包的头部定义整个数据包的长度,应用程序先读取数据包的长度,然后读取整个长度的包字节数据,保证读取的是单个包且完整。
5、在浏览器中输入一个网址后,所执行的全部过程?
1)浏览器解析URL,抽出域名字段
2)DNS解析。DNS实际上是一个域名和iP对应的数据块
3)浏览器与网站建立TCP连接(三次握手)
4)浏览器通过http协议发送请求
5)服务器处理http请求并返回响应
6)释放TCP连接(四次挥手)
7)浏览器解析html代码,并请求html代码中的资源(如js、css、图片等)
8)浏览器对页面进行渲染呈现给用户。
未完待续