美文网首页
tcp基本概念

tcp基本概念

作者: 杨剑锋 | 来源:发表于2020-11-04 16:46 被阅读0次

    我们先看看tcp的头部里面有什么


    image.png

    源端口和目标端口这个顾名思义不用怎么解释。
    序列号:是准备建立连接时候系统随机生成的一个号码,通过下面标志位的SYN,发送到接收方,每发送一次,累计增加一次发送的数据大小。目的是为了解决复杂的网络环境下的传输的乱序问题。

    确认应答号:发送端收到确认应答号就可以确定之前的数据都被正常接收了。目的是为了解决不丢包的问题。

    几个控制位:
    ACK:这个置为1时,确认应答号有效,除非开始创建连接的时候发SYN,其余时间正常情况下这个都是1.
    SYN: 这个置为1的时候,表示要建立连接,通过序列号字段的随机数值来初始化连接数据。
    RST: 这个置为1的时候,表示tcp连接出现异常,要终止连接。
    FIN: 这个置为1 的时候,表示数据收发ok了,准备要断开连接。

    image.png

    TCP位于传输层,主要就是为了提供可靠的传输,确保传输的数据包,按顺序,没有损坏,没有冗余。所以tcp是一个面向连接,可靠性保证的,基于字节流的传输层通讯协议。
    每个tcp的确定是通过一个四元组


    image.png

    源地址和目标地址是在ip层,源端口是目标端口就是在tcp层,由这个四元组可以唯一确定一个tcp连接。地址确定什么主机,端口确定了主机上具体什么进程。

    那么一个服务器的tcp端口一般可以建立多少个tcp连接?一个是受到文件描述符的限制,可以更改配置。另外一个是内存限制,每个tcp都会占一定的内存空间,每个连接之前测过,大概是几k,没有发送数据的情况。如果没有这些限制,ipv4 2的32次端口216次。ipv6直接就2的64次*端口了,这个理论极限几十年后感觉也不可能。

    最后我们也来看看udp的头部,然后讲讲和tcp的区别


    image.png

    目标端口和源端口这个就不说了。包长度就是头部+数据长度之和。校验和就是为了提高可靠性的。
    1.从连接上来看
    tcp是面向连接的,所以传输之前要先建立连接,才传输数据。udp是无连接的。
    2.服务对象
    这点是第一点的延申,因为tcp有连接,所以只能1对1。因为udp无连接,所以可以一对一,也可以一对多。
    3.可靠性
    tcp保证可靠性,有序性,无冗余,udp不需要。
    4.tcp有流量和拥塞控制,udp只管发就行。
    5.tcp首部比较大,udp首部比较小。
    6.tcp是字节流的发送,udp是按包一个个发送。

    相关文章

      网友评论

          本文标题:tcp基本概念

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