zoukankan      html  css  js  c++  java
  • TCP/IP学习笔记:TCP传输控制协议(一)

    1 TCP的服务

    尽管TCP和UDP都使用相同的网络层(IP),TCP却向用户提供一种面向连接的,可靠地字节流服务。两个使用TCP的应用,在彼此交换数据之前必须先建立一个TCP连接,在一个TCP连接中,仅有两方进行通信。TCP通过以下方式来提供可靠性:

    (1)应用数据被分割成TCP认为最合适发送的数据块。

    (2)当TCP发送一个段后它启动一个定时器,等待目的端确认收到这个报文段(超时重传)。

    (3)当TCP收到发自TCP连接另一端的数据,它将发送一个确认。

    (4)TCP将保持它首部和数据的检验和(端到端)。

    (5)TCP报文段通过IP数据传输,可能出现失序,因此TCP会对收到的数据进行重新排序,将收到的正确顺序交给应用层。

    (6)TCP将丢弃重复的数据

    (7)TCP还能提供流量控制。TCP的接收端只允许另一发送接收端缓冲区所能接纳的数据,防止缓存区溢出。

    另外TCP不提供对字节流的解释,对字节流的解释由TCP连接双方的应用层解释。

    2 TCP首部

    TCP数据被封装在一个IP数据报中:


    TCP首部格式。如果不计算任选字段,通常是20个字节。

    源端和目的端端口号:用于寻找发送端和接收端的应用进程。这2个值加上IP首部中的源端和目的端的IP地址构成唯一的确定的一个TCP连接。

    序号:用来标示从TCP发送端到接收端发送的数据字节流,表示在这个报文段中的第一个数据字节(无符号数,到达2^32-1后又从0开始)当建立一个TCP新的连接时,SYN标志变1。序号字段包含由这个主机选择的该连接的初始序号ISN,该主机要发送数据的第一个字节序号为这个ISN加1,因为SYN标志需要消耗一个序号。每个传输的字节都被计数,确认序号包含发送端确认的一端所期望手下的下一个序号。因此确认序号应该上次成功收到的数据字节序号加1。只有ACK标志为1的确认序号字段才有效。

    首部长度:占四位,表示首部长度为多少个4字节,因此首部最大为60字节

    六个标志比特:

    URG:紧急指针有效

    ACK:确认序号有效

    PSH:接收方应该尽快将这个报文交给应用层。

    RST:重建连接

    SYN:同步序号用来发起一个连接。

    FIN:发送端完成发送任务

    窗口大小:16位,最大65535字节。TCP的流量控制由每一端通过申明的窗口大小来提供。窗口大小为字节数,起始于确认序号字段指明的值,这个值正是接收端期望接收的字节。

    检验和:覆盖整个TCP报文段,发送端计算,接收端验证(需要加上伪首部)。

  • 相关阅读:
    js合并table指定列
    jquery固定表头和列头
    Response输出excel设置文本样式
    Oracle、DB2、SQLSERVER、Mysql、Access分页SQL语句
    清除webBrowser 缓存和Cookie的解决方案
    WebBrowser加载一个URL被多次调用DocumentCompleted 的问题解决方案<转>
    Windows 2003 防火墙开启后无法访问FTP解决办法
    基于支付宝微信通知的一种个人收款回调方案(转)
    P2P技术详解(三):P2P技术之STUN、TURN、ICE详解
    turn协议的工作原理
  • 原文地址:https://www.cnblogs.com/yangang92/p/5341647.html
Copyright © 2011-2022 走看看