面试整理之计网(整理ing)

https://www.zhihu.com/question/32255109

https://coolshell.cn/articles/11609.html

https://hit-alibaba.github.io/interview/basic/network/TCP.html

  • OSI参考模型

应用层:针对特定应用的协议,并规定应用程序中通信相关的细节
表示层:应用处理的数据格式和网络标准数据的【数据转换】
会话层:负责建立管理删除会话【通信管理】
传输层:确保两个【节点】之间的数据传输
网络层:地址管理和路由选择
数据链路层:互联设备之间传送和识别数据帧【物理层面上节点之间的通信传输】
物理层:比特流和电子信号之间的切换

  • MTU 最大传输单元

  • TCP通过检验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠传输

当发送端的数据到达接收主机时,接收端主机会返回一个已经收到消息的ACK。如果有ACK,说明数据已经成功到达对端,如果在一定时间内没有等到确认应答,发送端进行重发。

流控制:接收端主机告知发送端自己可以接收数据的大小【窗口】,于是发送端会发送不超过这个限度的数据。TCP首部有一个字段用来通知窗口大小,字段值越大,说明网络吞吐量越高。

拥塞控制:
慢启动:随着包的每次往返,指数增长—超时

  • 127.开头的ip地址是内部主机回环地址(loopback),永远不能出现在主机外部的网络之中

  • localhost
    域名,大多数电脑上的localhost指向127.0.0.1,可以用它来获取运行在本机上的网络服务

  • 0.0.0.0:
    本网络中的本机,在服务端绑定端口时绑定到0.0.0.0,这样外界可以通过我多个ip地址(外网和内网)访问我的服务
    在ipv4中表示一个无效未知不可用的目标;
    在服务器中表示本机上任意的ipv4地址;
    表示默认路由,即当路由表中没有找到完全匹配的路由时所对应的路由;
    当一个主机没有被分配IP地址时用于表示主机本身(DHCP分配IP地址时)

  • 网络连接的建立

三次握手的时候TCP首部写入MSS(最大消息长度),告诉对方自己能够适应的MSS大小,并在两者选泽一个较小值使用。

每次确认应答不是每个段,而是多个段。

为什么需要“三次握手”:为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。
第一个连接请求报文段在某个网络结点长时间滞留了,以致延误到连接释放以后某个时间才到达报文段。本来这是一个早已失效的报文段,但server收到此失效的连接请求报文段后,误以为是client再次发出的一个新的连接请求。于是向client发出确认报文段,同意建立链接,假设不采用“三次握手”,server此时已经建立新的连接了,但client此时没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送数据,但server以为新的运输连接已经建立,并一直等待client发来数据。

主要防止失效报文使server一直等待。

只有两次握手,服务端不知道客户端是否已经收到自己的同步信号,如果同步信号丢失,两边的服务端同步信号无法一致。

为什么需要“四次挥手”:

tcp是全双工模式,收到FIN时意味没有数据再发来,但是还是可以继续发送数据。
重发可能丢失的ACK

其中一方,如a提出了释放请求,b收到后进行报文确认,a到b的连接就释放了;这个时候b还是可以向a发送数据,a会直接接收,b发送完成后再向a请求释放,a发送最后一个ack确认后,就会进入TIME_WAIT状态,再停留2个MSL时间

B没有收到ACK包,然后B等待ACK包超时,又向A发送了一个FIN包
a) A是TIME_WAIT重发ACK,B收到这个ACK包进入CLOSED状态
b) A是CLOSED,认为这是一个错误的连接,向B发送一个RST包,当B收到这个RST包,进入CLOSED状态
c) B没有收到A的回应,会继续发送FIN【TCP的重传机制】直到重传超时(至于这个时间是多长需要仔细研究),B重置这个连接,进入CLOSED状态

【三次握手】:同步连接双方的序列号和确认号并交换tcp窗口大小

  • ACK:确认应答
    RST:TCP出现异常,强制断开连接
    SYN:希望建立连接
    FIN:今后不会有数据发送,希望断开连接

  • FTP:有两条TCP连接,一条用来控制,一条用于数据(文件)的传输 21
    SSH:加密的远程登录系统,机密通信内容 22
    TELNET:实现远程登录的客户端 23

  • MSL,Maximum Segment Life,这是TCP 对TCP Segment 生存时间的限制,报文最大生存时间
    TTL, Time to Live, IP对IP Datagram生存时间的限制,255s,MSL一般=TTL=255s
    RTT是客户到服务器往返所花时间(round-trip time,简称RTT)

  • tcp和udp区别

tcp:面向连接(3次握手、4次挥手),可靠的字节流传输、传输慢、tcp拥塞控制(调节发送速率)

udp:不需连接,只负责进程间交付,差错检测(传输层最基本的功能)、报文传输、传输快、udp流量不可调节

  • 端口和对应的服务
    ftp 21 ssh 22 telnet 23 http 80 https 443 mysql 3306

  • IP地址分为哪几类
    A类:以0开头,网络号8,主机号24
    B类:以10开头,网络号16,主机号16
    C类:以110开头,网络号24,主机号8
    D类:

网络号标识某个网络,主机号表示某个网络中的主机
网络号:子网掩码和ip地址按位与,主机号:子网掩码取反再和ip地址按位与

  • PKI(公钥基础结构)
    是一种通过可信赖的第三方【CA认证机构】检查对方是否真实
    数字证书包含用户身份信息】用户公钥信息(用于加密)及数字签名(确保用户信息和公钥信息的真实合法性)

+
在tcp协议中处于last_ack状态的连接,如果一直收不到对方的ack,会一直处于这个状态吗? - JCRunner的回答 - 知乎
https://www.zhihu.com/question/27564314/answer/162476313

  • 会话跟踪常用方法

    • URL重写
    • 将会话ID添加到html隐藏表单元素中提交到服务器
    • Cookie
  • CSRF(跨站请求伪造)
    伪造请求,冒充用户在站内的正常操作。
    防范:
    关键操作只接受POST请求
    验证码
    检测 Referer
    Token(不可预测性):保持原有参数不变,添加一个参数Token,随机值且一次性(请求成功后更新Token),不知道Token而无法构造合法的请求进行攻击,注意保密性,不放在URL中

  • XSS(跨站脚本攻击)
    过滤用户的输入,eg.对用户输入进行HTML escape

TCP 提供一种面向连接的、可靠的字节流服务
在一个 TCP 连接中,仅有两方进行彼此通信。广播和多播不能用于 TCP
TCP 使用校验和,确认和重传机制来保证可靠传输
TCP 给数据分节进行排序,并使用累积确认保证数据的顺序不变和非重复
TCP 使用滑动窗口机制来实现流量控制,通过动态改变窗口的大小进行拥塞控制

  • https://hit-alibaba.github.io/interview/basic/network/TCP.html

你可能感兴趣的:(面试总结)