后端须知网络协议总结

TCP

概念

  • 传输控制协议(英语:Transmission Control Protocol,缩写:TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议。

  • TCP/IP协议是一个协议簇。里面包括很多协议的,UDP只是其中的一个, 之所以命名为TCP/IP协议,因为TCP、IP协议是两个很重要的协议。

  • TCP/IP协议集包括应用层,传输层,网络层,网络访问层。

各层协议

图是找来的,可能不全。

应用层
  • 超文本传输协议(HTTP):万维网的基本协议;
  • 文件传输(TFTP简单文件传输协议);
  • 远程登录(Telnet),提供远程访问其它主机功能, 它允许用户登录internet主机,并在这台主机上执行命令;
  • 网络管理(SNMP简单网络管理协议),该协议提供了监控网络设备的方法, 以及配置管理,统计信息收集,性能管理及安全管理等;
  • 域名系统(DNS),该系统用于在internet中将域名及其公共广播的网络节点转换成IP地址。

还有许多可自行百度。

传输层
  • TCP
  • UDP
网络层
  • Internet协议(IP)
  • Internet控制信息协议(ICMP)
  • 地址解析协议(ARP)
  • 反向地址解析协议(RARP)

上面我们知道整个架构,所以入门的小白别再搞混了TCP,HTTP。

TCP连接之三次握手,四次挥手

上图

  • SYN: 同步序列编号(Synchronize Sequence Numbers)。是TCP/IP建立连接时使用的握手信号。SYN这个标志位只有在TCP建立连接时才会被置1 ,握手完成后SYN标志位被置0。

  • ACK: ACK (Acknowledgement)即是确认字符,在数据通信中,接收站发给发送站的一种传输类控制字符。接收到通信,置为1。

  • FIN: 一端传输完毕时,将FIN 置为1,提出停止TCP请求。

注意: 挥手时,客户端先进行FIN,服务端会返回ACK,但并不代表数据传输完成,服务端还可以进行传输数据,直到服务端返回FIN,客户端返回ACK,连接中断(此过程可以相反,由服务端先发起FIN)

知道了连接过程,想必一定有状态在里面

上图

直接看是很难理解,所以左思右想,还是按流程走,最让人清晰

注:(S:服务端存在的状态,C:客户端存在的状态,S&C表示都存在的状态)

三次握手状态变化
  • LISTEN (S): 服务器等待从任意远程TCP端口的连接请求。侦听状态。
  • SYN-SENT (C):客户在发送连接请求后等待匹配的连接请求。通过connect()函数向服务器发出一个同步(SYNC)信号后进入此状态。(如图:客户端发送SYN)
  • SYN-RECEIVED (S):服务器已经收到并发送同步(SYNC)信号之后等待确认(ACK)请求。(如图:服务端收到SYN,发送SYN+ACK ,等待客户端ACK状态)
握手成功,互发数据
  • ESTABLISHED (S&C):服务器与客户的连接已经打开,收到的数据可以发送给用户。数据传输步骤的正常情况。此时连接两端是平等的。这称作全连接。
四次挥手(客户端和服务端都可能是主动关闭或者被动关闭)
  • FIN-WAIT-1 (S&C):(服务器或客户)主动关闭端调用close()函数发出FIN请求包,表示本方的数据发送全部结束,等待TCP连接另一端的ACK确认包或FIN&ACK请求包。(如图:客户端发送FIN,等待服务端ACK状态)
  • CLOSE-WAIT (S&C):被动关闭端接到FIN后,就发出ACK以回应FIN请求,并进入等待本地用户的连接终止请求的半关闭状态。这时可以发送数据,但不再接收数据。(如图:服务端收到FIN并发送ACK之后,继续发送数据的状态)
  • FIN-WAIT-2 (S&C):主动关闭端在FIN-WAIT-1状态下收到ACK确认包,进入等待远程TCP的连接终止请求的半关闭状态。这时可以接收数据,但不再发送数据。(如图:接收到服务端ACK之后,等待服务端FIN请求状态)
  • CLOSING (S&C):在发出FIN后,又收到对方发来的FIN后,进入等待对方对己方的连接终止(FIN)的确认(ACK)的状态。少见。
  • LAST-ACK (S&C):被动关闭端全部数据发送完成之后,向主动关闭端发送FIN,进入等待确认包的状态。(如图:服务器数据发送完成,向客户端发送FIN)
  • TIME-WAIT (S/C):主动关闭端接收到FIN后,就发送ACK包,等待足够时间以确保被动关闭端收到了终止请求的确认包。【按照RFC 793,一个连接可以在TIME-WAIT保证最大四分钟,即最大分段寿命(maximum segment lifetime)的2倍】(如图:客户端收到FIN,响应ACK给服务端,等待服务端接收到ACK)
  • CLOSED (S&C):完全没有连接。

UDP

概念

  • 用户数据包协议(英语:User Datagram Protocol,缩写:UDP),又称用户数据包协议,是一个简单的面向数据报的传输层协议。
  • UDP是一个非连接的协议,传输数据之前源端和终端不建立连接, UDP只提供数据的不可靠传递,它一旦把应用程序发给网络层的数据发送出去,就不保留数据备份(所以UDP有时候也被认为是不可靠的数据报协议)。 在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、 计算机的能力和传输带宽的限制; 在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。
  • UDP信息包的标题很短,只有8个字节,相对于TCP的20个字节信息包的额外开销很小。
  • 吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的速率、传输带宽、 源端和终端主机性能的限制。
  • 由于缺乏可靠性且属于非连接导向协议,UDP应用一般必须允许一定量的丢包、出错和复制粘贴。 因此主机不需要维持复杂的链接状态表(这里面有许多参数)。
  • UDP是面向报文的。发送方的UDP对应用程序交下来的报文, 在添加首部后就向下交付给IP层。既不拆分,也不合并,而是保留这些报文的边界, 因此,应用程序需要选择合适的报文大小。

TCP与UDP的区别

  1. 基于连接与无连接;

  2. 对系统资源的要求(TCP较多,UDP少);

  3. UDP程序结构较简单;

  4. 流模式与数据报模式 ;

  5. TCP保证数据正确性,UDP可能丢包;

  6. TCP保证数据顺序,UDP不保证。

个人博客

www.ccode.live/bertonlee/l…

欢迎关注

欢迎关注公众号“码上开发”,每天分享最新技术资讯

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值