博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
浅谈传输层协议TCP和UDP
阅读量:5874 次
发布时间:2019-06-19

本文共 1673 字,大约阅读时间需要 5 分钟。

在当今因特网的层次结构中,传输层的协议主要有两种,其一为Transmission Control Protocol,即TCP;其二为User Datagram Protocol,即UDP。

1、TCP service model

TCP是使用最广泛的传输层通讯协议,它在两个端系统之间建立连接,并通过两端的状态机来维护连接,为应用层提供可靠的字节流传输服务。

(1)TCP是面向连接的

  在传输实际数据的字节流之前,两个端系统的TCP会通过三次握手来确定建立连接,即所谓的3-way handshake

  

  在上图所示的情形中,主机A试图与主机B建立TCP连接,A会首先发一个SYN(Synchronize)信号和一个用于字节流识别的基数到B申请建立连接。如果B同意,那么B会返回一个SYN信号和A之前所发的基数,以及一个ACK(acknowledgement)表示同意建立连接并确认基数。这时,A会回复一个ACK信号到B,表示接受。至此,两端表征连接状态的状态机被初始化,双向的连接就已经建立起来,就等待字节流的传递。

  在数据传输完成之后,并且TCP连接被要求解除(teardown),两端的传输层会通过所谓的四次挥手来解除连接关系。

  

   主机A认为它不会再向B发送数据之后,请求关闭连接,A会向B发送一个FIN(Finish)信号。B接到这个信号后,会回复ACK到A,这时B会关闭从A来的数据流。A——>B的数据流被关闭,但是B可能还有数据要发往A,所以B还会发送数据到A,直到发送完成。此后,B会发送一个FIN到A申请终结连接,A会发送一个ACK表示同意。至此,A、B间的双向连接被关闭。至于A、B知道什么时候该发什么信号,是由其背后的状态机决定的。连接解除后,两端的状态机也被删除。

(2)TCP字节流的基本单元——TCP报文段(Segment)

  根据网络中的分组交换原则,TCP字节流被划分成多个TCP报文段。一个TCP报文段,主要有首部和数据两部分。首部的各个域描述了该报文段的性质,数据则是来自应用层的数据,如HTTP请求。TCP报文段生成之后,将会交付网络层进行下一步处理。

  TCP报文段的结构:

  源端口和目标端口的作用:发送数据和回复信息的目标位置

  序列号和确认序列号:序列号用于检查传输数据的完整性,并用于按序重构数据;确认序列号用于表示接收方正在等待的下一个数据序列号,以保证每个数据段都被接收。

  求和检查(Checksum):用于检查数据是否出现错误,如果有会要求重新发送。

  窗口规模:用于流量控制,避免接收方被淹没。

(3)可靠的数据传输保证机制

  上述重点字段保证的数据确保递交到位机制、数据正确性检查机制、流量控制机制,还有通过多字段保证的TCP连接身份识别机制。

 

2、UDP service model

  与TCP比较,UDP的服务模型要简单很多,以至于被认为是只指定传输端口的传输层协议。

  UDP不会建立连接,不保证数据送达(忽略丢包),也没有Sequence number来保证数据的正确顺序。它只有单向的传输,而不会有双向的交流。

  UDP最大的优点是简单,那些不需要确保递交、流量控制、按需递交的应用,通常会选择UDP作为其传输层协议。如DNS。

 

 

(3)小结

  这篇随笔浅谈了一下传输层的两个协议——TCP和UDP,说到了它们的性质和运行机制,各自的优势。

  总的来说,TCP是面向连接的传输层协议,它通过诸多字段和双向交流,来给应用层提供可靠的字节流传输服务。在传输数据之前,要通过三次握手建立状态机和连接;传输数据之后,要通过四次挥手解除连接。为了将所有数据传输到目的地,TCP通常会重新发送数据段。而UDP则更加简单,只负责将数据段递交给网络层,没有建立连接的过程,不会去维护状态。

  才疏学浅,还有待进步,欢迎大家交流。

  

转载于:https://www.cnblogs.com/wenmingCode/p/10321846.html

你可能感兴趣的文章
我的友情链接
查看>>
Html body的滚动条禁止与启用
查看>>
Tengine新增nginx upstream模块的使用
查看>>
多媒体工具Mediainfo
查看>>
1-小程序
查看>>
CentOS图形界面和命令行切换
查看>>
HTML5通信机制与html5地理信息定位(gps)
查看>>
Mind_Manager_2
查看>>
手动升级 Confluence - 规划你的升级
查看>>
汽车常识全面介绍 - 悬挂系统
查看>>
电子政务方向:We7.Cloud政府云门户
查看>>
虚拟机Centos7连接Internet
查看>>
ansible 基本操作(初试)
查看>>
更改tomcat的根目录路径
查看>>
51nod 1292 字符串中的最大值V2(后缀自动机)
查看>>
加快ALTER TABLE 操作速度
查看>>
学习笔记之软考数据库系统工程师教程(第一版)
查看>>
基本网络概念
查看>>
将 ASP.NET Core 2.0 项目升级至 ASP.NET Core 2.1 RC 1
查看>>
js提交图片转换为base64
查看>>