面试题-计算机网络

TCP和UDP的区别:

参考:https://zhuanlan.zhihu.com/p/24860273

https://www.jianshu.com/p/219eb040479b

答:qq用的是UDP,TCP辅助

1、什么是TCP连接的三次握手?

第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。

理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。四次挥手:

第一次: 当主机A完成数据传输后,将控制位FIN置1,提出停止TCP连接的请求 ;

第二次: 主机B收到FIN后对其作出响应,确认这一方向上的TCP连接将关闭,将ACK置1;

第三次: 由B 端再提出反方向的关闭请求,将FIN置1 ;

第四次: 主机A对主机B的请求进行确认,将ACK置1,双方向的关闭结束.。

TCP使用面向连接的通信方式, 大大提高了数据通信的可靠性,使发送数据端和接收端在数据正式传输前就有了交互, 为数据正式传输打下了可靠的基础。

TCP有哪些字段:

1、ACK 是TCP报头的控制位之一,对数据进行确认。确认由目的端发出, 用它来告诉发送端这个序列号之前的数据段都收到了。 比如确认号为X,则表示前X-1个数据段都收到了,只有当ACK=1时,确认号才有效,当ACK=0时,确认号无效,这时会要求重传数据,保证数据的完整性。

2、SYN 同步序列号,TCP建立连接时将这个位置1。

3、FIN 发送端完成发送任务位,当TCP完成数据传输需要断开时,,提出断开连接的一方将这位置1。

Socket建立网络连接的步骤:服务器监听、客户端请求、连接确认

区别:

1、TCP是面向链接的,虽然说网络的不安全不稳定特性决定了多少次握手都不能保证连接的可靠性,但TCP的三次握手在最低限度上(实际上也很大程度上保证了)保证了连接的可靠性;而UDP不是面向连接的,UDP传送数据前并不与对方建立连接,对接收到的数据也不发送确认信号,发送端不知道数据是否会正确接收,当然也不用重发,所以说UDP是无连接的、不可靠的一种数据传输协议。

2、也正由于1所说的特点,使得UDP的开销更小数据传输速率更高,因为不必进行收发数据的确认,所以UDP的实时性更好。

知道了TCP和UDP的区别,就不难理解为何采用TCP传输协议的MSN比采用UDP的QQ传输文件慢了,但并不能说QQ的通信是不安全的,(QQ用的是UDP

因为程序员可以手动对UDP的数据收发进行验证,比如发送方对每个数据包进行编号然后由接收方进行验证啊什么的,

即使是这样,UDP因为在底层协议的封装上没有采用类似TCP的“三次握手”而实现了TCP所无法达到的传输效率。

• TCP运输层和网络层的职能? :网络层是协议栈的中心,用于计算机网络系统的互连和路由,基本功能是转发与路由运输层提供应用进程之间的逻辑通信机制在Internet中,有两种常用的传输层协议,也就是UDP和TCP,两者的特点是:UDP:无需建立连接,实现简单。头部开销少,没有拥塞控制,用户可以在应用层对其进行深度定制。TCP:需要建立连接,拥有可靠传输,流量控制,拥塞控制的特点,对上层用户提供稳定,可靠的网络连接。

参考:https://blog.csdn.net/qq_32740675/article/details/83388470

• TCP拥塞控制机制 :TCP的拥塞控制机制是从端到端的角度,推测网络是否发生拥塞,如果推断网络发生拥塞,则立即将数据发送速率降下来,以便缓解网络拥塞。使用窗口机制,通过调整窗口大小实现对数据发送速率的调整。控制算法包括慢启动(slow start)、拥塞避免(congestion avoidance)、快速重传(fast retransmit)和快速恢复(fast recovery)四部分。

• TCP/IP中路由是哪一层实现的,路由的原理是什么?

答:在网络层实现,路由(route)就是分组在因特网上从一台计算机传输到另一台计算机的实际路径。因特网上的每个路由器都存储有一张表,称为路由表(routing table),路由器正是依据路由表的内容将各个 IP 分组转发到正确的去处。路由表包含五项信息IP地址、子网掩码、下一跳IP地址、离出接口,名字和度量。

参考:https://blog.csdn.net/ZP_icenow/article/details/81080184

如何判断一个你打向的ip在国内还是国外,用什么工具?答:使用IP库判断IP地址

2.判断你的请求数据包被转发了几次,路径是什么,用什么工具?nginx

3.Http状态码 205、401、403、503是什么?重置内容、未授权、禁止、服务不可用

参考:https://blog.csdn.net/allen_a/article/details/50715957

4.内部接口互相调用,如果要增加鉴权,鉴权是放在header里还是body里,为什么

5.外部接口调用,如果要有防重放的攻击检测,如何保证安全性

6.tcp为什么要四次挥手,为什么不是三次?建立连接和释放连接的过程不一样。参考:https://github.com/phpforlan/ArtisanPHP/issues/20

7.http1.0和1.1的区别 1.1和2的最大区别?https://juejin.im/entry/5981c5df518825359a2b9476

8.ssl和https?HTTP 是一个网络协议,是专门用来帮你传输 Web,ssl中文叫安全套接层为了结局传输内容会被偷窥(嗅探)和篡改,https是 “HTTP 协议”和“SSL/TLS 协议”的组合。

9.洪水攻击原理https://zhuanlan.zhihu.com/p/78831197

6、创建一个TCP服务器的步骤是什么?

答:1.socket创建一个套接字2.bind绑定ip和port 3.listen使套接字变为可以被动链接4.accept等待客户端的链接5.recv/send接收发送数据

 

7、端口是干什么用的?答:如果把IP地址比作一间房子,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端口可以有65536(2的16次方)个之多!端口是通过端口号来标记的,端口号只有整数,范围是从0到65535。

三次握手四次挥手,三次挥手可不可以

2.OSI和TCP/IP的区别(第一个问题是问我网络看的哪本书学习的,我说tcp/ip详解)

https://blog.csdn.net/linbounconstraint/article/details/40475585

3.http server服务,现在要做一个针对用户维度或者接口维度的频控,假设一秒100这种,问在不改变原有接口服务的情况下,你如何实现

4.网络安全相关,csrf这种攻击如何防范

5.各种协议问我了解过没有,例如TCP/UDP/ICMP,这个问题比较常见

6.微服务和http服务的区别,你对两者的理解

发布了176 篇原创文章 · 获赞 21 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_27262727/article/details/104905248