zoukankan      html  css  js  c++  java
  • TCP/IP详解 笔记十三

    TCP协议(一) 概述

    特点

    1,  面向连接可靠的字节流服务

    2,  只有两方通信,不能用于广播或多播

    3,  应用数据被TCP分隔为最合适发送的数据段,传给IP协议栈

    4,  发送端并启动定时器,超时重传

    5,  接收端需要发送确认

    6,  检验和错误的数据包将被丢弃,并不确认收到此数据包(希望超时重传)

    7,  重新排序,因为TCP数据包是IP报文的数据,而ip协议不保证数据按顺序到达,所以需要重新排序。

    8,  同理,ip包会发生重复,所以TCP需要排重。

    9,  流控制,TCP的每一方有固定大小的缓冲空间,接收端只允许发送端发送能容纳的数据。

    10, 提供全双工服务。

    字节流服务

    TCP报文结构

    字段解释:

    插口对:IP头部的ip+tcp头部的端口唯一确定一个应用程序,而相对的插口称为插口对唯一确定tcp双方。

    序号:标识发端向收端发送的数据字节流,表示这个报文中的第一个数据字节。序号对每个字节计数,序号为32bit无符号数据,到达232-1 回到0

    SYN:当建立一个新的连接的时候SYN变为1,此时序号字段包含主机选择的初始序号ISN(Initial Squence Number),该主机发送的第一个字节序号为ISN+1。

    确认序号:等于上次已经成功收到的字节序号加1,只有ACK标识为1时确认序号才有效。连接一旦建立确认序号总是被设置。

    因为TCP提供全双工的服务,所以连接的每一方必须保存传输数据序号。

    TCP可以表述为一个没有选择确认和否认的滑动窗口协议,收到数据包后不能确定或否定该数据包的对与错,而只是回复相应的确认序号。

    首部长度:给出首部32bit字的数目,为4bit所以,首部长度最长为60字节,不加选项为20字节。存在这个字段的原因是选项长度是可变的。

    标识位:

    滑动窗口大小:TCP的流量控制由连接双方声明窗口大小提供,窗口大小的单位为字节,起始于确认序号指定的值,窗口大小字段为16bit,所以窗口最大为65535字节。

    校验和:覆盖首部和数据,强制性字段,由发端计算和存储,由接收端校验。

    紧急指针:当URG为1时才有效,是一个正的偏移量,和序号相加表示紧急数据最后一个字节的序号。

    选项:最常见的选项是最大报文大小MSS(Maximum Segment Size).

  • 相关阅读:
    元类
    redis--py链接redis【转】
    redis--py操作redis【转】
    python format 用法详解
    初识多线程__下
    mysql学习笔记五 —— MHA
    mysql学习笔记四 —— AB复制
    mysql学习笔记三 —— 数据恢复与备份
    mysql学习笔记二 —— 权限体系
    mysql学习笔记一 —— 数据的增删改查
  • 原文地址:https://www.cnblogs.com/manziluo/p/5862882.html
Copyright © 2011-2022 走看看