`
hammer_nail
  • 浏览: 22942 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
阅读更多

TCP是TCP/IP协议 簇中传输层上 一种网络协议,它是一种面向连接的、可靠的协议。为了提供这种可靠性,
TCP实现了各种有效的机制、算法。为了从一种宏观的角度去了解这个协议,这里先大致地提一下与之相关
的概念。  
1. 什么是‘面向连接的’?
   引用中的 概念:
   面向连接意味着两个使用 TCP的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须先建立
   一个TCP连接。  
2. 什么是‘三次握手’?
   在建立TCP连接之前,两个使用TCP的应用需要交换三次网络数据。这三个数 据包的来往也就是所谓的‘
   三次握手’。  
3. 报文段segment
   我们说TCP是流式的网络协议,那是因为,应用程序可以一直往TCP写数据,无论你是逐byte,还是write
   a chunk,TCP对应用传给它的数据进行缓冲,直到缓冲数据达到一定尺寸才发送。可以看出,对于应用
   而言,TCP就像是stream的。但事实上,在TCP层,数据还是以块为单位的。这个块也就是所谓的报文段
   segment。  
4. 什么是MTU?
   MTU即最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议的某一层上面所能通过的
   大数据报大小(以字节为单位)。我个人目前的理解认为,MTU是一个网络在硬件层次上所允许的最大
   数据包大小,例如以太网大概是1500字节。  
5. 什么是MSS?
   MSS即最大报文段大小(Maximum Segment Size),它是指TCP中一个报文段上附加的用户数据的最大大小。
   这里稍微说下应用层发送某个数据包时整个TCP/IP协议栈的操作过程:应用层将自己的用户数据传给TCP
   层(传输层),TCP在这些数据前添加自己的协议头(简单地理解为附加一些数据),然后将数据交给
   IP层(网络层),IP层附加自己的协议头,以此 推。
   虽然MSS意思是最大报文段大小,但事实上它是排除了协议头的用户数据。  
6. MTU and MSS ?
   可以简单地给你一个这样的公示:mss = mtu - tcp_header_size - ip_header_size。
   而通常,IP协议附加的协议头大小和TCP的协议头大小都是20字节,所以通常的MSS为1460字节。
   注意,这里说的数字并不见得正确,因为MSS是可以被协商的。各种协议头也可能被添加附加数据,但是
   他们的关系是这样的。  
7. 什么是窗口大小?
   找本TCP的书看下TCP数据包的包头(本文多次使用数据包、报文的概念,我这里说的都是一样的),你会
   发现那个16位的窗口大小。
   窗口这个域对于整个TCP协议都很重要。简单地说,窗口大小是指接收端的接收缓存的大小。上面说了,应用
   在发数据的时候,TCP会缓存这些数据,稍后发送。接收数据时也一样,TCP接收数据并缓存起来,直到应用
   调用recv之类的函数 取数据时,TCP才将这些缓存数据清除。  
   TCP发送端会根据TCP接收端那个接收缓存大小决定发送多少数据(如何知道这个缓存大小?稍后给概念)。
   这样,TCP接收端的接收缓存才不至于缓冲溢出。  
8. 提供可靠性的方法 之一:ACK确认?
   这里还不敢提序号、确认号、延时ACK等乱七八糟的东西。我只能告诉你,当TCP发送某些数据给TCP接收方
   时,TCP接收方会发回一个确认报文。TCP发送方收到这个确认报文后,就可以确认刚才发送的数据包成功到达。  
   再翻到TCP包头结构那张图,ACK是TCP包头中
   的1bit标志位,如同SYN、PSH、RST之类的标志一样,这些标志都有一个专有的用途。当ACK标志位被设置为1
   时,我就称其为ACK确认标志,因为ACK就是用于确认报文段的。  
   在上面所说的窗口大小中,我提到,发送方如何知道接收方的接收缓存大小呢?这也是通过确认报文段实现:
   当接收方接收到数据后,发送ACK确认数据包给发送方,就设置包头中的窗口域。  
9. 提供可靠性的方法之二:各种定时器
   TCP中会设置很多计时器,这些定时器大多用于超时重传(老半天得不到回应,所以重传数据)。  
10.什么是全双工?
   全双工就是你可以同时在一个TCP连接上进行数据的发送和接收。这种双工特性也促使了关闭TCP连接时的四次
   握手。

分享到:
评论

相关推荐

    收集的udp/tcp入门例子

    本资料包提供了一些入门级的UDP和TCP编程示例,帮助初学者理解这两种协议的基本工作原理和使用方法。 **UDP协议详解:** UDP是一种无连接的、不可靠的传输协议,它不保证数据包的顺序、完整性和可靠性。这意味着UDP...

    TCP-IP入门经典(第5版).azw3

    《TCP/IP入门经典(第5版)》深入浅出地介绍了TCP/IP协议的入门知识。全书分为5个部分,共24章:《TCP/IP入门经典(第5版)》首先从TCP/IP基础知识开始;接着着重介绍了TCP/IP协议系统;然后介绍了TCP/IP连网的相关知识...

    TCP/IP入门经典(第5版)

    《TCP/IP入门经典(第5版)》深入浅出地介绍了TCP/IP协议的入门知识。全书分为6个部分,共24章:首先从TCP/IP基础知识开始;接着着重介绍了TCP/IP协议系统;然后介绍了TCP/IP连网的相关知识;第4部分对TCP/IP中使用的...

    TCP+IP最佳入门+原书第6版 PDF

    《TCP/IP最佳入门:原书第6版》是一本针对网络通信协议的入门经典教材,主要聚焦于TCP/IP协议族的基础知识。TCP/IP是互联网的核心,全称Transmission Control Protocol/Internet Protocol,它定义了网络设备如何交换...

    TCP IP从入门到精通

    《TCP/IP从入门到精通》是一本深入浅出的网络通信协议学习资源,它涵盖了从基础概念到实际应用的广泛内容。TCP/IP是Internet的核心协议,由应用层、传输层、网络层和数据链路层等多个层次组成,是理解网络通信的基础...

    基于S7-400 PN-H 冗余系统CPU集成PN口的Modbus TCP通信快速入门.zip

    基于S7-400 PN-H 冗余系统CPU集成PN口的Modbus TCP通信快速入门zip,2010年3月西门子Indusdry Solution IT部门更新了基于S7-300/400系统CPU的集成PN口的Modbus/TCP的最新版本软件选项包“MobusTCP PN-CPU V2.4”,本文...

    基于S7-1500 CPU集成PN口的ModbusTCP通信快速入门.zip

    基于S7-1500 CPU集成PN口的ModbusTCP通信快速入门zip,基于S7-1500 CPU集成PN口的ModbusTCP通信快速入门

    C#TCP服务器和客户端Winform源代码

    C#TCP服务器和客户端Winform源代码,基于.net4.0开发的两个窗体简单的应用...自己在学习的时候,按网上敲出来的代码关闭时老报错,自己根据学习是的经验整合出来的代码,程序代码有注释,适合于C#TCP入门级新手参考。

    androidstudio TCP客户端程序学习入门

    本教程将引导你入门Android TCP客户端程序设计,让你能够通过局域网连接到PC上的TCP服务器并发送消息。 首先,理解TCP协议的基本原理至关重要。TCP提供了一种全双工通信模式,即数据可以在两个方向上同时传输。它...

    tcpudp入门程序.zip_Linux TCPUDP_QPN_UDP_tcp server_关于tcp/udp的一个入门程序

    这个"tcpudp入门程序.zip"包含的资源可能是一个简单的TCP和UDP服务器及客户端的实现,帮助初学者理解这两个协议的工作原理。`TCP的编程流程.tif`和`UDP的编程流程.tif`可能是流程图,清晰展示TCP和UDP服务器的编程...

    入门级 Socket TCP封装

    本教程提供的是入门级别的Socket TCP封装,适用于初学者快速上手。以下是关于Socket TCP封装及其相关知识点的详细解释: 1. **TCP协议**:传输控制协议(TCP)是一种面向连接的、可靠的、基于字节流的传输层通信...

    socket套接字编程之tcp小入门小程序

    本篇将深入探讨“socket套接字编程之tcp小入门小程序”,主要针对使用VC++进行TCP服务器与客户端的控制台编程。我们将讨论TCP协议的基础知识,以及如何在VC++环境中构建简单的TCP服务器和客户端应用。 TCP...

    Wireshark入门 tcp三次握手

    ### Wireshark入门:TCP三次握手详解 #### 一、引言 在互联网技术领域,TCP/IP协议族作为网络通信的基础框架,对于保障数据传输的可靠性和安全性具有至关重要的作用。其中,TCP(Transmission Control Protocol)...

    TCP_IP入门经典(第5版) (计算机编程入门经典系列 33) - [美]Joe Casad

    TCP_IP入门经典(第5版) (计算机编程入门经典系列 33) - [美]Joe Casad,tcp-ip国外经典书籍之一,mobi格式

    Tcp/Ip入门经典第5版

    适合入门的书籍,本书很受欢迎,欢迎下载。分享给大家,与大家共勉。

    Modbus TCP 通讯快速入门(更新版本V2.6).zip

    Modbus TCP 通讯快速入门(更新版本V2.6)zip,基于 S7-300,400 CPU 集成 PN 接口 Modbus TCP 通讯快速入门,文档主要介绍Modbus TCP通讯,SIMATIC S7-300/400系统 Modbus/TCP通讯等方面的内容。

    基于s7-300-400以太网通讯块cp-modbus-tcp-通讯快速入门

    ### 基于S7-300/400以太网通讯模块CP Modbus TCP通讯快速入门 #### Modbus TCP通讯概述 ##### 1.1 通讯所使用的以太网参考模型 MODBUS/TCP是MODBUS系列通讯协议的一个变种,专门设计用于管理和控制自动化设备,并...

    WCF 简单入门案例 TCP HTTP PIPE

    WCF 简单入门案例 总共 TCP HTTP PIPE 三种协议 QQ:574311505 欢迎交流

    基于S7-1200CPU集成PN 接口 Modbus TCP通讯快速入门.zip

    基于S7-1200CPU集成PN 接口 Modbus TCP通讯快速入门zip,2010年4月西门子全球技术资源库发布了用于S7-1200 CPU的集成PN 接口通过Modbus/TCP与PAC3200(CE-X22)进行数据交换的功能块库,本文主要介绍了Modbus TCP的通讯...

    TCP协议编程入门的小案例

    本篇文章将通过一个简单的TCP协议编程案例,带你入门TCP/IP的工作原理和编程方法,主要涉及WPF编码环境下的实现。 首先,TCP/IP协议族是互联网的核心,它定义了一套标准,使得不同设备可以互相通信。TCP协议位于TCP...

Global site tag (gtag.js) - Google Analytics