面试题--计算机网络(TCP/UDP)基础知识

网络协议分层

  • TCP/IP四层模型
    面试题--计算机网络(TCP/UDP)基础知识_第1张图片
  • **OSI 7层协议模型 **
    面试题--计算机网络(TCP/UDP)基础知识_第2张图片

TCP

三次握手目的及流程

  • TCP Flags 8个
    URG:紧急指针标志
    ACK:确认序号标志(1:确认序号有效 0:报文不含确认信息)
    PSH
    RST:重置链接标志
    SYN:同步序号,用于建立连接过程
    FIN: finish标志 用于释放连接

目的:通过三次握手建立连接
流程:
面试题--计算机网络(TCP/UDP)基础知识_第3张图片
第一次握手:建立连接时,客户端发送SYN包【seq=j】到服务器,并进入SYN_SEND状态,等待服务器确认。
第二次握手:服务器通过监听LISTEN收到SYN包,必须确认客户的SYN(ack=j+1),同时自己发送一个SYN包(seq=k),即SYN+ACK包,此时服务器进入SYN_RECV状态。
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK【ack=k+1】,此包发送完毕,客户端和服务端进入ESTABLISHED 状态,完成三次握手。

TCP四次挥手目的及流程

目的:终止连接
流程:

第一次挥手:Client发送一个FIN报文,来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态;
第二次挥手:Server收到FIN后,发动一个ACK包给Client,确认序列号为收到序号+1(ack=seq+1)(一个FIN占用一个序号),Server进入CLOSE_WAIT状态。
第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序列号为收到序列号+1(ack=seq+1),Server进入CLOSED状态,完成四次挥手。

TCP的滑动窗口

TCP使用滑动窗口做流量控制与乱序重排

  • 保证TCP的可靠性
  • 保证TCP的流控特性

UDP协议

特点:

  • 面向非连接
  • 不维护链接状态,支持同时向多个客户端传输相同的消息
  • 数据包包头只有8个字节,额外开销小
  • 吞吐量只受限于数据生成速率,传输速率以及机器性能
  • 尽最大努力交付,不保证可靠交付,不需要维持复杂的连接状态表
  • 面向报文,不对应用程序提交的报文信息进行拆分或者合并

TCP和UDP的区别

  • 面向连接vs无连接
  • 可靠vs不可靠
  • 有序vs无序
  • 慢vs快
  • 重量级(头部20bit)vs轻量级(头部8bit)

Http协议

http状态码

  • 1XX : 指示信息–表示请求已接收,继续处理
  • 2XX: 请求成功
  • 3XX : 重定向–要完成请求必须进行更进一步的操作
  • 4XX: 客户端错误-- 请求有语法错误或请求无法实现
  • 5XX : 服务端错误–服务器未能实现合法的请求

get和post请求的区别

  • Http报文层面:get将请求信息放在URL中,post请求放在请求体中
    get不安全,post安全
    get最大提交3kb,post无限制
  • 数据库层面: get符合幂等性和安全性,post不符合
  • 其他层面:get可以被缓存,被存储,post不行

你可能感兴趣的:(Java,面试,udp,tcp/ip,网络协议)