本文仅仅是对TCP协议做个简要的介绍。

    TCP协议,即传输控制协议。与UDP协议同处于传输层,相同使用相同的网络层,但TCP提供了一种可靠的、面向连接的传输数据服务,它会在两个使用TCP的应用之间建立一个TCP连接,在该连接上进行数据的传输。

    TCP通过下面方式提供可靠性:

    1、应用程序被切割成TCP觉得最合适发送的数据块。

这点与UDP全然不同。应用程序产生的UDP数据报长度将保持不变,加上IP首部后。才会进行IP分片。

    2、当TCP发出一个报文段后,它会启动一个定时器,等待目的端发确认收到这个报文段。假设没能及时收到该确认信息,则将重发这个报文段。

    3、当TCP接收端收到发送端发来的TCP报文段时。它将发送一个确认。这个确认不是马上发送的,一般会推迟几分之中的一个秒。

    4、TCP将保持它首部和数据的校验和。这是一个端到端的校验和。假设收到的报文段的校验和有差错,TCP将丢弃该报文段,同一时候不发送确认收到的消息,从而使发送端超时重发。

    5、TCP能提供流量控制。TCP连接的每一方都有固定大小的缓冲空间,TCP的接受端仅仅同意还有一端发送接收端缓冲区所能接纳的数据,这将防止较快主机致使较慢主机的缓冲区溢出。

    6、因为TCP报文段作为IP数据报来传输,IP数据报的到达可能会失序,因此TCP报文段的到达也可能失序,假设必要。TCP将对收到的数据进行重排序,将收到的数据以正确的顺序交给应用层。

    7、因为IP数据报有可能发生反复,TCP的接收端必须丢弃反复的数据。

    从上面几点能够看出,TCP协议保持可靠性的方式就是超时重传,这样的方式非常好。尽管TCP也能够通过向源主机发送各种各样的ICMP报文或者来处理这些。但这也是不可靠的。试想,假设ICMP报文在发送回来的过程中丢失了,非常明显这样的方式就不可靠了。最可靠的方式就是仅仅要得不到确认,就又一次发送数据,直到得到确觉得止。

    

【网络协议】TCP协议简单介绍的更多相关文章

  1. 网络编程TCP协议-聊天室

    网络编程TCP协议-聊天室(客户端与服务端的交互); <span style="font-size:18px;">1.客户端发数据到服务端.</span> ...

  2. 网络编程——TCP协议、UDP协议、socket套接字、粘包问题以及解决方法

    网络编程--TCP协议.UDP协议.socket套接字.粘包问题以及解决方法 TCP协议(流式协议) ​ 当应用程序想通过TCP协议实现远程通信时,彼此之间必须先建立双向通信通道,基于该双向通道实现数 ...

  3. 基于网络编程 TCP协议 及 socket 基本语法

    socket是什么 Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面, ...

  4. 网络编程——TCP协议和通信

    第1章 TCP通信 TCP通信同UDP通信一样,都能实现两台计算机之间的通信,通信的两端都需要创建socket对象. 区别在于,UDP中只有发送端和接收端,不区分客户端与服务器端,计算机之间可以任意地 ...

  5. 数据通讯与网络 第五版第24章 传输层协议-TCP协议部分要点

    上一博客记录了UDP协议的关键要点,这部分记录TCP协议的关键要点. 24.3 传输控制协议(TRANSMISSION CONTROL PROTOCOL) TCP(Transmission Contr ...

  6. 网络、TCP协议与UDP协议

    1.网络模型 (1)什么是网络模型 网络编程的本质是两个设备之间的数据交换,当然,在计算机网络中,设备主要指计算机.数据传递本身没有多大的难度,不就是把一个设备中的数据发送给两外一个设备,然后接受另外 ...

  7. 网络编程——TCP协议的三次握手和四次挥手

    三次握手原理解析 TCP握手协议在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接. 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND ...

  8. Http与协议TCP协议简单易懂

    于C#编写代码,很多时候会遇到Http协议或TCP合约,这里做一个简单的了解. TCP对应于该传送层协议,和HTTP对应于应用层协议,从本质上讲,两者是没有可比性.Http该协议是基于TCP之上的,当 ...

  9. 网络编程 TCP协议:三次握手,四次回收,反馈机制 socket套接字通信 粘包问题与解决方法

    TCP协议:传输协议,基于端口工作 三次握手,四次挥手 TCP协议建立双向通道. 三次握手, 建连接: 1:客户端向服务端发送建立连接的请求 2:服务端返回收到请求的信息给客户端,并且发送往客户端建立 ...

  10. http协议tcp协议ip协议三次握手四次挥手,为什么三次握手,为什么四次挥手,sockete套接字理解

    1.1 TCP是什么? TCP是Tranfer Control Protocol的简称,TCP协议是一种面向连接的.可靠的.基于字节流的运输层通信协议.通过TCP协议传输,得到的是一个顺序的无差错的数 ...

随机推荐

  1. Android Touch事件分发过程

    虽然网络上已经有非常多关于这个话题的优秀文章了,但还是写了这篇文章,主要还是为了加强自己的记忆吧,自己过一遍总比看别人的分析要深刻得多.那就走起吧. 简单演示样例 先看一个演示样例 : 布局文件 : ...

  2. iOS-获取Model(设备型号)、Version(设备版本)、app(程序版本)等

    IOS-获取Model(设备型号).Version(设备版本).app(程序版本)等 NSLog(@"uniqueIdentifier: %@", [[UIDevice curre ...

  3. Chromium网页输入事件捕捉和手势检測过程分析

    连续的输入事件可能会产生一定的手势操作.比如滑动手势和捏合手势. 在Chromium中,网页的输入事件是在Browser进程中捕捉的.Browser进程捕获输入事件之后,会进行手势操作检測.检測出来的 ...

  4. MFC exe使用C++ dll中的std::string 崩溃

    VC6中 MFC exe中 new  纯C++ dll dll 崩溃 我把纯C++的 dll,用/MTd 换成/MDd.就能够了

  5. iOS9中,swift判断相机,相册权限,选取图片为头像

    在iOS7以后要打开手机摄像头或者相册的话都需要权限,在iOS9中更是更新了相册相关api的调用 首先新建一个swift工程,在SB中放上一个按钮,并在viewController中拖出点击事件 ok ...

  6. 使用cxf3.0.4搭建webservice服务需要的最精简jar包

    转自:https://blog.csdn.net/w1014074794/article/details/47862163 下面是测试结果,只列出报错了的测试: 1.org.apache.catali ...

  7. POJ 1201 差分约束+SPFA

    思路: 差分约束,难在建图.(我是不会告诉你我刚学会SPFA的...) 把每个区间的ai–>bi连一条长度为ci的边. k–>k+1连一条长度为0的边. k+1–>k连一条长度为-1 ...

  8. Memcache相关面试题

    1)memcached的cache机制是怎样的? 懒惰算法 +最近最少使用原则 2)memcached如何实现冗余机制? 冗余:就是有好多好多不经常使用的. 可以不用实现冗余机制,如果非要实现.那就搞 ...

  9. sql获得某个时间段的数据

    CONVERT(Date, 时间字符串变量 ) between CONVERT(Date,'2015/2/10') and CONVERT(Date,'2015-3-10')

  10. ATL and MFC String Conversion Macros

    ATL 7.0介绍了一些新的转换类和宏,为现有的宏提供了重要的改进.新的字符串转换类和名称宏的形式是:C 源类型 2[C] 目标类型[EX]其中:•源类型和目标类型描述如下表.• [C]是目标类型必须 ...