说起来 TCP 的连接与释放真是个浪漫的故事呢!


说起来 TCP 的连接与释放真是个浪漫的故事呢!

文章插图
作者 | JunSIr_deCp
责编 | 王晓曼
来源 | CSDN博客
说起来 TCP 的连接与释放真是个浪漫的故事呢!

文章插图
TCP/IP协议概述
在TCP/IP协议栈,传输层有两个协议TCP和UDP:
  • TCP(Transmission Control Protocol,传输控制协议)协议:负责将要传输的文件分段 进行传输,一般用于建立会话 ,其基本特性是可靠传输 、流量控制,所谓三握手、四挥手也是基于TCP协议的;
  • UDP(User Data Protocol,用户数据报协议)协议:一个数据包就能够完成数据通信,数据包不分段 ,不需要建立会话 ,不需要流量控制 ,属于不可靠传输 , 屏幕广播 、多播 、广播都是基于UDP协议 。
以上定义,下面来详讲:
说起来 TCP 的连接与释放真是个浪漫的故事呢!

文章插图
说起来 TCP 的连接与释放真是个浪漫的故事呢!

文章插图
传输层协议的作用体现在应用层协议
TCP和UDP协议内指定不同的端口即可对应一个应用层的协议 。
端口代表主机服务的侦听"门牌号",不管是TCP还是UDP,带上门牌号,它就能帮你找到主机上的对应服务 。
例如我们在浏览器访问某个网站地址,这个动作会被我们本机上的80端口侦听到,并处理你的网络请求 。
我们主机上常见的应用层协议端口:
  • HTTP默认使用TCP的80端口标识;
  • FTP默认使用TCP的21端口标识;
  • SMTP默认使用TCP的25端口标识;
  • POP3默认使用TCP的110端口;
  • HTTPS默认使用TCP的443端口;
  • DNS使用UDP的53端口;
  • 远程桌面协议(RDP)默认使用TCP的3389端口;
  • Telnet 使用 TCP 的23端口 windows 访问共享资源使用TCP的445端口;
但是我们通过TCP/UDP封装的数据包,通过本机侦听服务发送到目标主机,目标主机是如何识别并处理的呢?
说起来 TCP 的连接与释放真是个浪漫的故事呢!

文章插图
如上图,我们会在数据包中添加目标端口号,这样目标主机相关服务侦听到,就能处理我们的请求了 。
说起来 TCP 的连接与释放真是个浪漫的故事呢!

文章插图
TCP/UDP传输层协议与网络层协议的区别
  • 网络层实现如何把数据包从这个地址(服务器)发送到另一个地址(服务器);
  • 传输层实现如何让这个应用程序找到对应计算机的应用程序,即服务 。

说起来 TCP 的连接与释放真是个浪漫的故事呢!

文章插图
说白了,IP协议主要让数据能知道传到哪去,不管对应目标谁来负责接待,而TCP/UDP管 。
越靠近顶层应用层、功能越强大 。
说起来 TCP 的连接与释放真是个浪漫的故事呢!

文章插图
UDP协议
主要特点:
  • UDP 是面向无连接的,即发送数据之前不需要建立连接,如向DNS服务器申请域名解析服务;
  • UDP 使用尽最大努力交付,即不保证可靠交付,同时也不使用拥塞控制;
  • UDP 是面向报文的 。UDP 没有拥塞控制,很适合多媒体通信的要求;
  • UDP 支持一对一、一对多、多对一和多对多的交互通信,这也是,应用场景如广播、组播;
  • UDP 的首部开销小,只有 8 个字节 。
基本描述:
UDP首部:
首先得知道数据包在OSI模型中层层传输,自顶向下 。
说起来 TCP 的连接与释放真是个浪漫的故事呢!

文章插图
来看看UDP首部:
说起来 TCP 的连接与释放真是个浪漫的故事呢!

文章插图
  • 用户数据报 UDP 有两个字段:数据字段和首部字段 。首部字段有 8 个字节,由 4 个字段组成,每个字段都是两个字节;
  • 在计算检验和时,临时把“伪首部”和 UDP 用户数据报连接在一起 。伪首部仅仅是为了计算检验和,伪首部12个字节取自IP数据报的字段;
  • 检验和实现UDP数据检验,通过验证检验和可以知道UDP数据包是否出现异常 。

说起来 TCP 的连接与释放真是个浪漫的故事呢!

文章插图
TCP协议
基本特点: