计算机网络面试知识点
TCP:一种提供面向连接的,可靠的数据传输服务。
UDP:提供无连接的,尽最大努力的数据传输服务(不保证传输的可靠性)
UDP的主要特点
1.无连接;
2.不保证可靠交付,不需要维持复杂的链接状态;
3.UDP是面向报文的;
4.UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低;
5.UDP支持一对一,一对多、多对一和多对多的交互通信(用于多播或广播)
6.UDP的首部开销小,只有八个字节,比TCP的20个字节的首部要短。
TCP连接主要特点
1.面向连接
2.端对端
3.可靠连接
4.全双通信。允许双方在任何时候都能发送数据。TCP连接的两端都设有发送缓存和接收缓存。
5.面向字节流。TCP 中的“流”(Stream)指的是流入进程或从进程流出的字节序列。“面向字节流”的含义是:虽然应用程序和 TCP 的交互是一次一个数据块(大小不等),但 TCP 把应用程序交下来的数据仅仅看成是一连串的无结构的字节流。
TCP和UDP区别:
1.是否需要分段传输
2.是否需要建立会话 (netstate -n查看会话)(netstat -nb查看哪个进程建立会话(管理员身份运行cmd(win+x)))
3.是否为可靠传输
4.是否需要流量控制
![图片说明](https://uploadfiles.nowcoder.com/images/20200413/936154763_1586782862848_8C48CCC102B3E29CA5A6F02026252CA6 "图片标题")
TCP协议和应用层协议关系
![图片说明](https://uploadfiles.nowcoder.com/images/20200415/936154763_1586959078478_3B383D8722B3F216B9DC54AEDED3AAB6 "图片标题")
![图片说明](https://uploadfiles.nowcoder.com/images/20200415/936154763_1586959173924_956DFEA405C7A964A4534EBCB8104844 "图片标题")
服务和应用层协议之间的关系
![ ](https://uploadfiles.nowcoder.com/images/20200415/936154763_1586959587337_948F1734EFED1760D48193EB01169C0E "图片标题")
1.服务使用TCP或UDP的端口侦听客户端请求
2.客户端使用IP地址定位服务器 使用目标端口定位服务
3.可以在服务器网卡上设置只开放必要的短口实现服务器安全。
查看服务器上侦听的端口:netstat -an
测试到某个计算机远程端口是否打开:
telnet 192.168.100 3389
![图片说明](https://uploadfiles.nowcoder.com/images/20200415/936154763_1586962418840_DB6CA341D5D5F4560004A1FD40BE8BD0 "图片标题")
![图片说明](https://uploadfiles.nowcoder.com/images/20200415/936154763_1586962637900_3B2028ABD6599055DD2E4D4A47432F7A "图片标题")
网络层用协议号端口来区分时TCP还是UDP TCP:6 UDP:17 IGMP:1
传输层用端口来区分应用层
TCP如何保证可靠传输
1.数据被分割成TCP最适合发送的数据块。
2.TCP给发送的每一个包进行编号,接收方对数据包进行排序,把有序数据传送给应用层。。
3.检验和:TCP将保持数据和首部的校验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段。
4.TCP的接收端会丢弃重复的数据。
5.流量控制:TCP连接的每一方都有固定大小的缓冲空间,TCP的接收端只允许发送端发送接收端缓冲区能接纳的数据。当接收方来不及处理发送方数据,能提示发送方降低发送速率,防止丢包。TCP使用流量控制协议是可变大小的滑动窗口协议。(TCP利用滑动窗口实现流量控制)
6.拥塞控制:当网络拥塞时,减少数据发送
7.停止等待协议:没发完一个分组就停止发送,等待对方确认,对方确认后再发下一个分小组。超时重传:当TCP发出一个段后,它启动一个定时器,等待接收端确认收到报文段。如果不能及时收到一个确认,将重发这个报文段。
停止等待协议
1.停止等待协议是为了实现可靠传输,基本原理是没发送完一个分组就停止发送,等待接收端发送确认。收到确认后在发送下一个分组。
2.超过时间后,发送端重新发送该分组,接收方如果重复收到该分组,丢弃重复的分组,同时还是需要进行确认。
自动重传请求ARQ协议
每发完一个分组需要设置一个超时计时器,其重传时间应比数据在分组传输的平均时间更长一些。这种自动重传方式称为自动重传请求ARQ。
有点:简单
缺点:信道利用率低
连续ARQ协议
发送方维持一个发送窗口,凡位于发送窗口内的分组可以连续发送出去,而不需要等待对方确认。接收方一般采用累计确认,对按序到达的最后一个分组发送确认,表名到这个分组为止所有分组都已经正确收到。
优点:信道利用率高,容易实现,即使确认丢失,也不必重传。
缺点:不能向发送方反映接收方已经正确收到的所有分组信息。 比如:发送方发送了 5条 消息,中间第三条丢失(3号),这时接收方只能对前两个发送确认。发送方无法知道后三个分组的下落,而只好把后三个全部重传一次。这也叫 Go-Back-N(回退 N),表示需要退回来重传已经发送过的 N 个消息。
滑动窗口
1.TCP利用滑动窗口实现流量控制机制。
2.滑动窗口是一种流量控制技术。早期网络通信中,通信双方不会考虑网络的拥挤情况直接发送数据,同时发送数据,导致中间节点阻塞掉包,谁也发不了数据,所以就有了滑动窗口机制来解决此问题。
3.TCP中采用滑动窗口来进行传输控制。滑动窗口的大小意味着接收方还有多大的缓冲区可以用于接收数据。发送方可以通过滑动窗口的大小来确定应该发送多少字节数据。当滑动窗口为零,发送方一般不能再发送数据,但两种情况除外:发送紧急数据,允许用户终止在远端机上的运行进程。另一个种情况发送方可以发送一个1字节的数据报来通知接收方重新声明它希望接收的下一个字节以及发送方的滑动窗口大小。
流量控制
1.TCP利用滑动窗口实现流量控制
2.流量控制是为了控制发送方的发送速率,保证接收方来得及接受。
3.接收方发送的确认报文中的窗口字段可以用来控制发送方窗口大小,从而让影响发送速率。将窗口字段设置为零,则发送方不能发送数据。
拥塞控制
特点
1.是全局性的,设计所有的主机,所有的路由器,以及与降低网络传输性能有关的所有因素。
2.相对于流量控制是点对点的,端到端的问题。流量控制所要做的是一只发送端发送数据的速率。
####实现
1.TCP需要发送方维持一个拥塞窗口的状态变量。拥塞窗口的大小取决于网络拥塞成都,并且动态变化。发送方让自己的发送窗口取为拥塞窗口和接收方窗口中较小的一个。
四种控制算法
1.慢开始
主机开始发送数据时用小数据试探,避免网络拥塞,由小增大。cwnd初始值为1,没经过一个轮次传播,cwnd加倍。
![图片说明](https://uploadfiles.nowcoder.com/images/20200414/936154763_1586853140841_FB4DCB2746C066135506D2AC477C02BC "图片标题")
2.拥塞避免
让拥塞窗口的cwnd缓慢增大,没经过一个往返时间RTT就把发送方的cwnd加1.
3快重传与快恢复(FRR fast retransmit and recovery)
![图片说明](https://uploadfiles.nowcoder.com/images/20200414/936154763_1586853443044_F63A4B4D7C78908DF4C6C578656294E7 "图片标题")
有了 FRR,如果接收机接收到一个不按顺序的数据段,它会立即给发送机发送一个重复确认。如果发送机接收到三个重复确认,它会假定确认件指出的数据段丢失了,并立即重传这些丢失的数据段。当有单独的数据包丢失时,快速重传和恢复(FRR)能最有效地工作。当有多个数据信息包在某一段很短的时间内丢失时,它则不能很有效地工作。
TCP三次握手
![ ](https://uploadfiles.nowcoder.com/images/20200415/936154763_1586958677269_E641ED6494CB3FCC87DEB23BEFFA3704 "图片标题")
SYN:同步标志
同步序列编号栏有效。该标志仅在三次握手建立连接有效。
为什么要三次握手
假如只有两次握手,client向server发送连接请求,但是由于网络阻塞,连接请求报文段在某个网络节点长时间的滞留,以至延误到连接释放后才到达server端,server端发送连接确认到client端,由于client没有发送连接请求,所以不会发送数据,但是server端却以为建立了新的连接,等待client端发送数据,这种情况下server的很多资源造成了浪费。
TCP四次挥手
![ ](https://uploadfiles.nowcoder.com/images/20200415/936154763_1586958694081_87FA6E989B0E1533542F89468DFFFF19 "图片标题")
在浏览器中输入url地址到显示主页过程
![图片说明](https://uploadfiles.nowcoder.com/images/20200414/936154763_1586853604531_09EFDBEF13690AC55F5F75E3D6339C1D "图片标题")
简单来说分为以下过程:
1.DNS解析
2.TCP连接
3.发送HTTP请求
4.服务器处理请求并返回HTTP报文
5.浏览器解析渲染页面
6.连接结束。
http和https的区别
http:
1.超文本传输协议。
2.提供一种发送和传输html页面的方法。
3.http以明文方式发送。
4.易被黑客拦截
https:
1.以安全为目标的http通道
2.安全是基于SSL。
SSL:协议可分为两层:
SSL记录协议:
1.建立在可靠的传输协议之上的。(如TCP)
2.为高层协议提供数据封装、压缩、加密等基本功能支持。
SSL握手协议:
1.建立在SSL记录协议之上
2.用于实际数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。
https设计目标:
1.数据保密性
2.数据完整性
3.身份校验安全性
https和http的区别:
1.https要用CA申请整数,免费证书较少,需要一定费用。
2.用的端口不一样。http:80,https:443.
3.http连接很简单,是无状态的。(无状态指其数据包的发送、传输、接受都是相互独立的)。https是由http+SSL协议构建的加密传输,身份认证的网络协议
参考:https://blog.csdn.net/qq_42651904/article/details/91355804#1-%E5%BA%94%E7%94%A8%E5%B1%82
常用状态码:
200 请求成功。
204 请求处理成功,但是没有任何资源可以返回给客户端。
206 对资源某一部分的请求。
301 永久性重定向
302 临时性重定向
303 资源uri已更新,是否临时按新的uri访问。
304
301、302、303响应状态码返回时,几乎所有浏览器都会把post改成get,并删除请求报文内的主体后,请求会自动再次发送