zoukankan      html  css  js  c++  java
  • TCP/IP TCP

    1.概述

      TCP是一个面向连接的字节流服务,在彼此的连接中需要建立一个TCP连接进行通信,TCP也是一个可靠的服务,通过几种方式验证

      1.应用数据分割成TCP认为合适的数据快,应用程序产生的数据报长度保持不变,由TCP传递给IP的信息块成为报文段或段.

      2,当TCP发送一个段后,启动一个定时器,等待目的端确认到这个报文段,如果等待目的端确认收到这个报文段,如果不能收到一个确认,则重发这个报文段。

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

      4.TCP将保持它首部和数据的检验和,目的是检测数据在传输过程中的任何变化m如果收到检验和差错,TCP丢弃这个报文段和不确认收到此报文段

      5.TCP报文段作为IP数据报传输,而IP数据报达到可能会失序,因此TCP报文到达可能会失序

      6.TCP的接收端会丢失重复的数据

      7.TCP提供流量控制,链接每一方都有固定大小的缓冲空间,接受段只允许另一端发送接收端缓冲区的数据

      在两个通过TCP交换8bit字节构成的字节流,TCP不再字节流插入记录标示符,成为字节流服务(byte stream service)

     2.数据格式

      

      每个TCP段都包含源端和目的端的端口号,用于寻找发送端和收端应用进程,有时一个IP地址和一个端口号也称作插口(socket)

      序号用来表示TCP端向TCP收端发送的数据字节流,表示在这个报文段中的第一数据字节,如果将字节流看做2个应用程序间的单向流动,则TCP用序号对每个字节进行行数,序号是32bit的无符号数,序号到达2的32次方-1后又从0开始

          当建立一个连接时,SYN标志为1,序号字段包含由这个主机选择的该连接的初始序号ISN,该主机要发送数据的第一个字节序号为ISN加1,因为SYN标志消耗了一个序号.

      TCP为应用层提供了全双工服务,这意味数据在两个方向上独立进行传输,因此,连接的每一端必须保持没个方向上的传输序号。

      首部长度给出首部32bit字节的数目,需要这个值因为任选字段的长度是可变的。  

      在TCP首部有6个字段,多个可同时被设置为1.

      URG 紧急指针

      ACK 确认序号有效

      PSH 接收方应该将这个报文发给应用层

      RST 重建连接

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

      FIN 发送端完成任务

      

      TCP流量控制有连接的每一端通过声明窗口大小来提供,窗口大小为字节数,

  • 相关阅读:
    单例模式(singleton)
    Unsupported major.minor version 51.0
    “万能数据库查询分析器”4.03发布,谨以此致我们终将逝去的青春
    和菜鸟一起学linux内核之初始化init篇
    PL/SQL备份oracle数据库
    java.lang.ClassCastException: org.apache.struts.taglib.bean.CookieTei
    DB Query Analyzer 4.03 is upgraded in ZOL
    Android应用程序资源的查找过程分析
    java.lang.IllegalArgumentException: Can't convert argument: null
    Dalvik虚拟机简要介绍和学习计划
  • 原文地址:https://www.cnblogs.com/EraserHead/p/6692625.html
Copyright © 2011-2022 走看看