校招准备系列8-计算机网络

版权声明:本文为博主原创文章,转载请注明出处! https://blog.csdn.net/peopleqinlei/article/details/82956958

OSI 参考模型(7层)

7.应用层
6.表示层
5.会话层
4.传输层
3.网络层
2.数据链路层
1.物理层

TCP/IP分层模型(5层)

5.应用层
4.传输层
3.网络层
2.数据链路层
1.物理层

传输方式分类

  • 面向有连接型
  • 面向无连接型

TCP/UDP的区别

  • TCP面向连接,UDP面向非连接即发送数据前不需要建立链接
  • TCP提供可靠的服务(数据传输),UDP无法保证
  • 数据传输控制(丢包重发,多包 重排序),流量控制,拥塞控制
  • TCP面向字节流,UDP面向报文
  • TCP数据传输慢,UDP数据传输快
    若通信数据完整性需让位与通信实时性,则应该选用 TCP 协议(如文件传输、重要状态的更新等);反之,则使用 UDP 协议(如视频传输、实时通信等)。

https://blog.csdn.net/qzcsu/article/details/72861891

TCP的3次握手与4次挥手

https://blog.csdn.net/to_be_better/article/details/54885684

为什么是“3次握手”?

只有2次的话,1.客户端主动建立连接的数据报意味着用户准备好接受连接了,并且希望连接到服务器。2.服务器的ack意味着服务器准备好接受连接了。
考虑这种情况,客户端准备好资源,然后发送建立连接的数据报,如果报文没有成功送到服务器,或者服务器的应答ack没有送到客户端,那么客户端的资源就白白浪费了。如果报文成功送到服务器,但是服务器的应答ack没有送到客户端,那么服务器也准备了资源,但是并不会有客户端连接它,也浪费了。

为什么是“4次挥手”?

由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。
因为当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你可能还需要发送一些数据给对方,再发送FIN报文给对方来表示你同意现在可以关闭连接了,故这里的ACK报文和FIN报文多数情况下都是分开发送的,也就造成了4次挥手。

为什么TIME_WAIT状态还需要等2MSL后才能返回到CLOSED状态?

这是因为虽然双方都同意关闭连接了,而且握手的4个报文也都协调和发送完毕,按理可以直接回到CLOSED状态(就好比从SYN_SEND状态到ESTABLISH状态那样);但是因为我们必须要假想网络是不可靠的,你无法保证你最后发送的ACK报文会一定被对方收到,因此对方处于LAST_ACK状态下的SOCKET可能会因为超时未收到ACK报文,而重发FIN报文,所以这个TIME_WAIT状态的作用就是用来重发可能丢失的ACK报文。

TCP精髓问题

停止等待协议、连续ARQ协议、滑动窗口、流量控制、拥塞控制(慢开始、拥塞避免、快重传、快恢复)
拥塞控制 https://blog.csdn.net/jtracydy/article/details/52366461
粘包问题 https://www.cnblogs.com/kex1n/p/6502002.html
根本原因:TCP是基于字节流的,没有消息边界
针对这个问题,一般有3种解决方案:

  1. 发送固定长度的消息
  2. 把消息的尺寸与消息一块发送
  3. 使用特殊标记来区分消息间隔

如何实现一套可靠的UDP系统?

UDP以其简单、传输快的优势,在越来越多场景下取代了TCP,如实时游戏。
(1)网速的提升给UDP的稳定性提供可靠网络保障,丢包率很低,如果使用应用层重传(而不是传输层),能够确保传输的可靠性。
(2)TCP为了实现网络通信的可靠性,使用了复杂的拥塞控制算法,建立了繁琐的握手过程,由于TCP内置的系统协议栈中,极难对其进行改进。
采用TCP,一旦发生丢包,TCP会将后续的包缓存起来,等前面的包重传并接收到后再继续发送,延时会越来越大,基于UDP对实时性要求较为严格的情况下,采用自定义重传机制,能够把丢包产生的延迟降到最低,尽量减少网络问题对游戏性造成影响。

socket编程图解

https://blog.csdn.net/odeviloo/article/details/51459887

GET和POST的区别

从原理性看:
根据HTTP规范,GET用于信息获取,而且应该是安全和幂等的
根据HTTP规范,POST请求表示可能修改服务器上资源的请求

从表面上看:
GET请求的数据会附在URL后面,POST的数据放在HTTP包体
POST安全性比GET安全性高

IP地址分类,掩码

IP网络标识+IP主机标识,共32bit。分为A,B,C,D,E共5类

  • A:0开头,1~8位是IP网络标识
  • B:10开头,1~16位是IP网络标识
  • C:110开头,1~24位是IP网络标识
  • D:1110开头,1~32位是IP网络标识

广播地址是主机地址部分全为1的地址
子网掩码:32bit,对应网络标识的bit为1,对应主机标识的bit为0. (常见的255.255.255.0,等价于/24)

ARP协议与原理

IP地址是在网络层使用的,而在实际通信时是需要MAC地址(硬件地址)。为此,需要知道IP地址对应的MAC地址。

DNS域名系统

DNS查询:查找域名对应的IP地址。先查找浏览器缓存,然后是hosts和本地缓存,如果本地没有缓存,就向更高级的域名服务器请求查询,依次是ISP,根域名服务器,顶级域名服务器,主域名服务器。
https://www.zhihu.com/question/23042131

http

http链接过程

域名解析 --> 发起TCP的3次握手 --> 建立TCP连接后发起http请求 --> 服务器响应http请求,浏览器得到html代码 --> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) --> 浏览器对页面进行渲染呈现给用户

http1.0,1.1,2.0的区别

1.0不支持持久连接,1.1支持,2.0支持多路复用()
在 HTTP/1.1 协议中浏览器客户端在同一时间,针对同一域名下的请求有一定数量限制。超过限制数目的请求会被阻塞。这也是为何一些站点会有多个静态资源 CDN 域名的原因之一,拿 Twitter 为例,http://twimg.com,目的就是变相的解决浏览器针对同一域名的请求限制阻塞问题。而 HTTP/2 的多路复用(Multiplexing) 则允许同时通过单一的 HTTP/2 连接发起多重的请求-响应消息。因此 HTTP/2 可以很容易的去实现多流并行而不用依赖建立多个 TCP 连接,HTTP/2 把 HTTP协议通信的基本单位缩小为一个一个的帧,这些帧对应着逻辑流中的消息。并行地在同一个TCP连接上双向交换消息。

交换机、路由器、网关的概念

  • 路由器:路由+转发
  • 交换机:划分冲突域
  • 网关:连接两个网络的设备
    路由表:目的网络地址+下一跳地址

IPv4包格式

header有20字节

主要的协议

DHCP:实现自动设置IP地址、统一管理IP地址分配
NAT:外网的全局IP和内网的私有IP的转换

http和https的区别?

答:HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。
HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议,与http主要区别在于:
http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议;
http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443;

常见的端口号

21:ftp
22:ssh
23:telnet
80:http
443:https

猜你喜欢

转载自blog.csdn.net/peopleqinlei/article/details/82956958
今日推荐