TCP协议

作者: 小凡凡520 | 来源:发表于2018-10-14 18:15 被阅读8次
说明

连接是指两个应用程序为了相互传递信息而专有的、虚拟的通信线路,也叫做虚拟电路。

流是指不间断的数据结构,类似于管道中的水流。可靠性指TCP协议提供可靠性传输,实行“顺序控制”或“重发控制”机制。此外还具有“流量控制”、“拥塞控制”提供网络利用率等众多功能。

TCP是一种面向连接的传输控制协议(transform contorl protocol),必须要和服务器交互,具有高安全性,可靠性,需要和服务器进行三次握手,能根据具体网络拥堵情况进行延时。例如MSN传输
TCP协议为应用软件提供一种面向链接的可靠的字节流传输服务的协议。

三次握手
1552225-1126590e66ffd968.png
1、三次握手的主要目的在于同步连接双方发送数据的初始序列号。
    连接中每次数据的发送、都需要附带序列号。作用已经在前文中提过
2、连接是双向的
    数据的发送/回复是双向的。每个方向都有自己维护的序列号

3、SYN - 创建一个连接
4、ACK - 同意一个操作
  • 第一次握手: (主动方 ----->> 被动方)链接待建立
    主动方向被动方申请建立连接(SYN)--以发送数据给被动方
  • 第二次握手: (主动方 ----->> 被动方)链接已建立、 (被动方 ----->> 主动方)链接待建立
    被动方同意建立连接(ACK)--以接收主动方数据
    被动方申请建立连接(SYN)--以发送数据给主动方
  • 第三次握手: (主动方 ----->> 被动方)链接已建立、 (被动方 ----->> 主动方)链接已建立
    主动方同意建立连接(ACK)--以接收被动方数据

握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据

四次挥手
1552225-ae4d37ee6deadacc.png
1、TCP连接是双向的
    可以看做两个管道、同一时刻每一个管道都可以发送数据
2、半关闭
    只关闭一个方向的数据传输、另一个方向还是可以继续的
3、FIN - 终结一个连接
4、ACK - 同意一个操作
5、主动方申请关闭
    连接的主动方先发送FIN数据段、告诉被动方自己的数据发送完了。
6、被动方确认
    连接的被动方很可能还没发送完数据、所以只能用ACK段告诉主动方自己知道也同意主动方关闭管道不在发送数据过来。
7、被动方申请关闭
    连接的被动方在确认自己的数据也发送完了之后、发送FIN段给主动方关闭连接。
8、主动方确认
    连接的主动方通过ACK告诉被动方、同意被动方也关闭管道。
TCP协议与UDP协议的比较
  • 面向连接的传输服务
    TCP以连接作为协议数据的最终目标
    对于TCP协议,要成功建立一个新的链接,需要保证新链接四个要素组合体的唯一性:客户端的IP、客户端的port、服务器端的IP、服务器端的port。也就是说,服务器端的同一个IP和port,可以和同一个客户端的多个不同端口成功建立多个TCP链接(与多个不同的客户端当然也可以),只要保证【Server IP + Server Port + Client IP + Client Port】这个组合唯一不重复即可。

  • UDP以端口作为协议数据的最终目标
    UDP协议的端口不可不用
    对于UDP协议、是以监听端口作为操作的。而且在协议中、源端口和源IP地址都是可选项。哪怕不填(只制定了目的端口和目的地址)也可以成功发送。

  • TCP协议需要先建立连接、然后才能发送/接收数据
    并且需要对很多细节进行协商(最大数据长度、窗口大小、初始序列号等)

  • UDP协议直接发送/接收数据

  • 可靠的传输服务

    1、TCP协议提供的是可靠的传输服务
        以序列号保证有序、以重发机制保证成功发送。
    2、UDP协议提供的是不可靠的传输服务
        可能会丢失、失序、重复等。
    
  • 面向字节流的传输服务
    TCP协议是以字节为单位流式传输数据,TCP的传输是无边界的
    TCP通过字节流传输,即TCP将应用程序看成是一连串的无结构的字节流。每个TCP套接口有一个发送缓冲区,如果字节流太长时,TCP会将其拆分进行发送。当字节流太短时,TCP会等待缓冲区中的字节流达到一定程度时再构成报文发送出去。

  • UDP协议是以数据块传输数据
    UDP的传输是有边界的
    而UDP传输报文的方式是由应用程序控制的,应用层交给UDP多长的报文,UDP照样发送,既不拆分,也不合并,而是保留这些报文的边界,即一次发送一个报文。

TCP应用于UDP应用
  • TCP应用
协议 说明
FTP 大文件传输,FTP是TCP/IP协议族之一、属于依赖TCP的应用层协议。适用于大批量、高可靠性要求的应用
Telnet 远程登录 ,适用于小批量、长时间、高可靠性要求的应用
http 可靠传输
  • UDP应用

    1、事实应用
        TCP的传输时有先后顺序的、所以有时会阻塞
    2、多播式应用
        TCP是面向连接的、如果要多播需要建立n*(n-1)个连接。

相关文章

  • 15分钟TCP

    TCP协议详解 介绍TCP协议之前,先区分一下TCP协议,和TCP/IP体系结构。TCP协议是TCP/IP协议体系...

  • 计算机网络02 - 传输层

    目录 TCP协议和UDP协议TCP首部TCP连接管理UDP首部 1. TCP协议和UDP协议 TCP协议:面向连接...

  • TCP协议三次握手和四次挥手

    TCP协议 TCP/IP协议栈 由上图可知,TCP/IP协议栈包含很多的协议。 二. 什么是TCP TCP是TCP...

  • TCP/IP协议

    一、关于TCP/IP TCP/IP协议是一个协议集合,HTTP协议,IP协议,TCP协议,DNS协议等都属于TCP...

  • TCP协议

    TCP/IP协议分层详解TCP/IP协议详解通俗易懂网络协议(TCP/IP概述)什么是TCP/IP协议?

  • TCP

    TCP协议 TCP协议,传输控制协议(Transmission Control Protocol,缩写为TCP)是...

  • TCP和UDP的区别

    TCP和UDP的区别: TCP协议和UDP协议特性区别总结: TCP协议可靠;UDP协议不可靠 TCP协议是面向连...

  • 详解TCP与UDP协议

    TCP/IP协议 首先弄清楚,TCP协议和UCP协议与TCP/IP协议的联系。 TCP/IP协议是一个协议簇。里面...

  • Python TCP编程

    Python网络编程之TCP 一、TCP协议 TCP协议,传输控制协议(Transmission Control ...

  • TCP HTTPS专题

    TCP HTTPS专题 TCP协议 TCP/IP协议分层 TCP/IP 协议族里重要的一点就是分层。 TCP/IP...

网友评论

      本文标题:TCP协议

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