https://blog.csdn.net/qq_36232611/article/details/107310469?utm_medium=distribute.pc_feed.none-task-blog-alirecmd-13.nonecase&depth_1-utm_source=distribute.pc_feed.none-task-blog-alirecmd-13.nonecase&request_id=

61.TCP和UDP的区别

TCP是一个面向连接,可靠,基于字节流的传输层协议。

UDP是一个面向无连接的传输层协议。

TCP是面向连接的,客户端和服务器端的连接,双方互相通信之前,TCP需要三次握手建立连接,而UDP没有建立连接的过程

tcp是面向字节流,udp是面向报文的。UDP的数据传输是基于数据报的,TCP继承了IP层的特性,TCP为了维护状态,将一个个IP包变成了字节流。

TCP报文格式图:
总结了计算机网络的知识点 - 图1

总结了计算机网络的知识点 - 图2

总结了计算机网络的知识点 - 图3

序号:Seq序号,占32位,标识从TCP源端口向目的端口发送的字节流,发起方发送数据时,对此进行标记
确认序号:Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1
标志位:共6个,即URG、ACK、PSH、RST、SYN、FIN等
URG,紧急指有效
ACK,确认序号有效
RST,重置连接
SYN,发起一个新连接
FIN,释放一个连接
PSH,接收方应该尽快将这个报文交给应用层

总结了计算机网络的知识点 - 图4

62.三次握手建立连接

TCP 的三次握手的过程:

总结了计算机网络的知识点 - 图5
总结了计算机网络的知识点 - 图6
总结了计算机网络的知识点 - 图7

有图可知都处于closed状态,服务器开始监听某个端口进入listen状态,客户端发起请求,发送SYN,seq=x,然后状态变为syn-sent状态。

服务器端接收到返回syn和ack,seq=x,ack =x+1,然后状态变成syn-rcvd状态。

客户端收到后,发送ack,seq=x+1,ack=y+1给服务器端,状态变为established,服务器收到后,状态变成established。

在连接过程中,需要对端确认的,需要消耗TCP报文的序列号。SYN消耗一个序列号而ACK不需要。

对于连接四次握手多余,二次握手,会带来资源的浪费,当遇到丢包,重传,连接关闭后,丢包到达服务端,就默认建立连接,可客户端以及关闭,所以三次握手就可以了。

63.四次挥手断开连接

TCP 四次挥手的过程
总结了计算机网络的知识点 - 图8
总结了计算机网络的知识点 - 图9
总结了计算机网络的知识点 - 图10
总结了计算机网络的知识点 - 图11
三次挥手,当服务器将ack和fin合并为一次挥手,会导致长时间的延迟,以至于客户端误认为fin没有到达客户端,让客户端不断重发fin。

64.TCP 滑动窗口

TCP 滑动窗口:

  1. 发送窗口

总结了计算机网络的知识点 - 图12

  1. 接收窗口

总结了计算机网络的知识点 - 图13

65.TCP 的拥塞控制?

TCP连接,拥塞控制:

  • 拥塞窗口(Congestion Window,cwnd)
  • 慢启动阈值(Slow Start Threshold,ssthresh)

TCP/IP协议四层

  1. 应用层决定了向用户提供应用服务时通信的活动。
  2. 传输层对上层应用层,提供处于网络连接中两台计算机之间的数据传输。
  3. 网络层用来处理在网络上流动的数据包。
  4. 链路层,用来处理连接网络的硬件部分。
  • HTTP协议的职责,生成对目标web服务器的HTTP请求报文
  • tcp协议的职责,为了方便通信,将HTTP请求报文分割成报文段
  • IP协议的职责,搜索对方的地址,一边中转一边传送
  • TCP协议的职责,从对方那里接收到的报文段,重组到达的报文段,按序号以原来的顺序重组请求报文

    66.了解一下DNS

    DNS是域名解析系统,它的作用非常简单,就是根据域名查出对应的IP地址。

  • 从根域名服务器查到顶级域名服务器的NS记录和A记录,IP地址

  • 从顶级域名服务器查到次级域名服务器的NS记录和A记录,IP地址
  • 从次级域名服务器查出主机名的IP地址

总结了计算机网络的知识点 - 图14
总结了计算机网络的知识点 - 图15