网络-TCP和UDP回顾

作者: DeadRabbit | 来源:发表于2017-05-26 19:49 被阅读44次
  • 面试总会问到网络问题
  • 平时开发中也总是模棱两可,不够深入
  • 所以就对相关知识点做一个梳理和总结,其一可以加深记忆,其二方便回顾,其三可以跟大家做一下交流

OSI模型


OSI模型,即开放式通信系统互联参考模型(Open System Interconnection,OSI/RM,Open Systems Interconnection Reference Model),是国际标准化组织(ISO)提出的一个试图使各种计算机在世界范围内互连为网络的标准框架,简称OSI。

OSI网络模型.jpg

TCP/IP参考模型


TCP/IP参考模型(TCP/IP reference model),是一组用于实现网络互连的通信协议,基于TCP/IP的参考模型将协议分成四个层次,它们分别是:网络访问层、网际互联层、传输层(主机到主机)、和应用层。

TCP:IP 参考模型.jpg

TCP


TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。
TCP通过检验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输。

TCP 首部

TCP 首部.png
Sequence Number是发送数据包中的第一个字节的序列号,32位。
Acknowledgment Number是确认序列号,32位。
ACK表示Acknowledgment Number字段有意义
PSH表示Push功能,RST表示复位TCP连接
SYN表示SYN报文(在建立TCP连接的时候使用)
FIN表示没有数据需要发送了(在关闭TCP连接的时候使用)
Checksum是校验和,16位

TCP需要三次握手才能建立,而断开连接则需要四次握手

  • TCP建立连接
    首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。
三次握手.png
  • TCP关闭连接
    假设Client端发起中断连接请求,也就是发送FIN报文。Server端接到FIN报文后,意思是说"我Client端没有数据要发给你了",但是如果你还有数据没有发送完成,则不必急着关闭Socket,可以继续发送数据。所以你先发送ACK,"告诉Client端,你的请求我收到了,但是我还没准备好,请继续你等我的消息"。这个时候Client端就进入FIN_WAIT状态,继续等待Server端的FIN报文。当Server端确定数据已发送完成,则向Client端发送FIN报文,"告诉Client端,好了,我这边数据发完了,准备好关闭连接了"。Client端收到FIN报文后,"就知道可以关闭连接了,但是他还是不相信网络,怕Server端不知道要关闭,所以发送ACK后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。“,Server端收到ACK后,"就知道可以断开连接了"。Client端等待了2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,我Client端也可以关闭连接了。Ok,TCP连接就这样关闭了!


    关闭TCP连接.png

UDP


UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。UDP在IP报文的协议号是17。

它主要用于不要求分组顺序到达的传输中,分组传输顺序的检查与排序由应用层完成,提供面向事务的简单不可靠信息传送服务。UDP 协议基本上是IP协议与上层协议的接口。UDP协议适用端口分别运行在同一台设备上的多个应用程序。

TCP与UDP区别总结:


1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保 证可靠交付
3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的
UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
5、TCP首部开销20字节;UDP的首部开销小,只有8个字节
6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道

写在最后


TCP和UDP的区别参考
TCP协议中的三次握手和四次挥手

相关文章

  • 网络-TCP和UDP回顾

    面试总会问到网络问题 平时开发中也总是模棱两可,不够深入 所以就对相关知识点做一个梳理和总结,其一可以加深记忆,其...

  • 网络

    网络 1.TCP / UDP 协议 TCP (Transmission Control Protocol)和UDP...

  • TCP和UDP

    TCP协议为TCP/IP协议;UDP为UDP/IP协议。TCP和UDP都是对应网络七层协议上的传输层。IP属于网络...

  • 计算机网络以及网络编程面试题(不断补充)

    TCP/IP网络协议栈层次 TCP 和 UDP 应用场景 TCP 和 UDP 不同 为什么TCP是可靠的?超时重传...

  • 计算机网络面试题

    简述 TCP 和 UDP 的区别 TCP 和 UDP 是 OSI 网络模型中的运输层的协议,TCP 提供可靠的通信...

  • 2018-09-19

    网络面试集 一、TCP/UDP 1、UDP与TCP的区别 TCP(TransmissionControl ...

  • 面试题目汇总

    计算机网络 tcp和udp的区别? tcp是面向连接的,udp是无连接的。 tcp是可靠的,udp是尽最大努力的。...

  • iOS 网络编程socket

    一、概念 首先,理清一些概念 TCP/IP和UDP,HTTP协议,Socket 1.TCP/IP和UDP,是网络中...

  • Java-网络编程

    网络参考模型 网络要素-IP地址 网络要素-域名解析 TCP和UDP UDP 应用 发送端 接收端

  • 第三十七天——[网络概述、UDP]

    学习内容:网络概述、UDP收获: 了解了TCP/IP协议(族); 了解了TCP和UDP的区别和联系; 了解了MAC...

网友评论

    本文标题:网络-TCP和UDP回顾

    本文链接:https://www.haomeiwen.com/subject/vaztfxtx.html