夜朦胧,人方静,无聊的人打开了无聊的电脑看到了一张无聊的图,想着想着就睡着了,梦到了人a和人b的一次聊天。

       有一天,a有事情想跟b商量就问b“有时间么,想和你聊一下天”,b想了一会发现自己能抽出时间就回复a说“可以啊,并把具体时间告诉了a”,a收到消息后就高高兴兴的去安排自己的时间,并告知b“我的时间也安排好了,可以说话了”,然后a和b噼里啪啦的说了好长时间,最后a的话终于说完了,想要结束聊天了。于是

a说“我的话说完了”,b这个时候就有两种可能性了:b的话没说完和b的话说完了。

1.如果b的话没说完,b就要跟a说“我的话还没说完了,你还得多听一会,等我说完了着”,然后b就噼里啪啦的又跟a说了一堆事情,a就在那里安静的听着,终于b说完了,这个时候b就跟a回了句“好了,我的事情终于说完了,你可以去忙其他的事了”,然后a就准备去忙其他的事情,但是他不知道b是不是还在想着这次谈话,出于礼貌和不放心,a还是决定再回一句让b也去忙其他的,于是a就给b回了一句“我要去忙其他的了,你也去忙你的其他的事吧”。于是这次谈话就愉快的结束了。

2.如果b的话说完了,b就说“好,我的话也说完了,你去忙其他的事吧”,a收到了b的回话,a就准备去忙其他的事情,但是他不知道b是不是还在关注着这次谈话,出于礼貌和不放心,a还是决定再回一句让b去忙其他的,于是a就给b回了一句“我要去忙其他的了,你也去忙你的其他的事吧”。

         有这次谈话,他想到了计算机的世界,计算机a要和计算机b建立链接,如果b刚好有资源就可以分配一段资源(建立进程,分配端口号等)去处理a的请求,他们之间通过三次TCP链接后就正式传输数据,处理数据。断开连接则有可能是b请求断开链接也有可能是a,但是过程是类似的,假设是a的数据传完了,就请求断开链接,b要给a的答复就有两种可能了,如果b还有数据没传完要断开链接总共就得四次TCP链接了,如果b的数据传完了要断开链接其实三次TCP链接就可以完事了。

        由于考虑到网络的不稳定性、TCP的不可靠性以及充分利用计算机资源等原因,人们就给计算机设定了一个合理的最高等待时间限度,如果网络断了,过了这个时间限度还没收到彼此回复,双方计算机就主动结束这次通信,终止这次通信所带来的资源开销。上例中a最后一次发消息给b也是由于b在这个时间限度内不会主动让出这次通信所占用的资源,为了让b更早的让出这些资源,a就及时发一个消息主动告诉b,让b腾出这段资源去忙其他的。a发送完最后一条消息后等到时间到了这个时间段就也让出因这次通信所占用的资源。

         计算机本来是笨的,然而人类很聪明,就让计算机变得很聪明;也让计算机变得很懂礼貌,然而计算机却让人类变得越来越不懂礼貌,越来越虚假。晨曦初露,人渐醒,原来只是整个世界打了个盹,做了个不近人情的交易!”醒来的那个人,揉了揉眼,不小心碰到了键盘,借着微光,无力地瞅了一眼横在面前的那副图,心想:“Y的,这世界和这图与我有关么,还害得我一宿没睡好?”于是就又无精打采地趴着睡了。

对TCP说三道四的更多相关文章

  1. 对TCP说三道四(三次握手)

    夜朦胧,人方静,无聊的人打开了无聊的电脑看到了一张无聊的图,想着想着就睡着了,梦到了人a和人b的一次聊天. 有一天,a有事情想跟b商量就问b“有时间么,想和你聊一下天”,b想了一会发现自己能抽出时间就 ...

  2. Tcp/ip 报文解析

    在编写网络程序时,常使用TCP协议.那么一个tcp包到底由哪些东西构成的呢?其实一个TCP包,首先需要通过IP协议承载,而IP报文,又需要通过以太网传送.下面我们来看看几种协议头的构成 一 .Ethe ...

  3. C#高性能TCP服务的多种实现方式

    哎~~ 想想大部分园友应该对 "高性能" 字样更感兴趣,为了吸引眼球所以标题中一定要突出,其实我更喜欢的标题是<猴赛雷,C#编写TCP服务的花样姿势!>. 本篇文章的主 ...

  4. Android实现TCP断点上传,后台C#服务实现接收

    终端实现大文件上传一直都是比较难的技术,其中涉及到后端与前端的交互,稳定性和流量大小,而且实现原理每个人都有自己的想法,后端主流用的比较多的是Http来实现,因为大多实现过断点下载.但稳定性不能保证, ...

  5. 漫谈TCP

    不得不承认,tcp是一个非常复杂的协议.它包含了RFC793及之后的一些协议.能把tcp的所有方面面面具到地说清楚,本身就是个很复杂的事情.如果再讲得枯燥,那么就会更让人昏昏欲睡了.本文希望能尽量用稍 ...

  6. 高性能 TCP/UDP/HTTP 通信框架 HP-Socket v4.1.1

    HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/ ...

  7. TCP/IP基础

    TCP/IP 是用于因特网 (Internet) 的通信协议. 计算机通信协议是对那些计算机必须遵守以便彼此通信的规则的描述. 什么是 TCP/IP? TCP/IP 是供已连接因特网的计算机进行通信的 ...

  8. TCP/IP之TCP_NODELAY与TCP_CORK

    TCP/IP之Nagle算法与40ms延迟提到了Nagle 算法.这样虽然提高了网络吞吐量,但是实时性却降低了,在一些交互性很强的应用程序来说是不允许的,使用TCP_NODELAY选项可以禁止Nagl ...

  9. TCP/IP之Nagle算法与40ms延迟

    Nagle算法是针对网络上存在的微小分组可能会在广域网上造成拥塞而设计的.该算法要求一个TCP连接上最多只能有一个未被确认的未完成的小分组,在该分组确认到达之前不能发送其他的小分组.同时,TCP收集这 ...

随机推荐

  1. html特殊字符转义问题(转!)

    html.javascript.url特殊字符转义在实际编程中都是有用到的,有的人对特殊字符转义的使用不是很清楚,下面就对html,javascript,url特殊字符的转义做一下说明和归纳. htm ...

  2. 第二次作业#include <stdio.h> int main() { int a,b,c,d,e; printf("请输入一个不多于五位的整数:\n"); scanf("%d",&a); if(a>=100000||a<=0) { printf("输入格式错误! \n"); } else { if(

    1 判断成绩等级 给定一百分制成绩,要求输出成绩的等级.90以上为A,80-89为B,70-79为C,60-69为D,60分以下为E,输入大于100或小于0时输出"输入数据错误". ...

  3. Java学习笔记16--异常

    异常 异常是导致程序中断运行的一种指令流,如果不对异常进行正确的处理,则可能导致程序的中断执行,造成不必要的损失, 所以在程序的设计中必须要考虑各种异常的发生,并正确的做好相应的处理,这样才能保证程序 ...

  4. sql server 2000通过机器名可以连,通过ip连不上的问题

    客户那边两台服务器A和B,之前一直都是好好的,今天因为换了网络环境,结果数据库之间不能相互访问了. 目前只能A访问B,B访问不了A,在服务器A上面试了,通过ip连本机,也是连接超时. 开始想着是服务器 ...

  5. hdu 3254 (状压DP) Corn Fields

    poj 3254 n乘m的矩阵,1表示这块区域可以放牛,0,表示不能,而且不能在相邻的(包括上下相邻)两个区域放牛,问有多少种放牛的方法,全部不放也是一种方法. 对于每块可以放牛的区域,有放或者不放两 ...

  6. 由struts错误使用引发的漏洞,使用参数作为返回的文件路径或文件名,作为返回result 值

    该错误可以导致他人任意访问该路径下的任何文件. struts 文件 <?xml version="1.0" encoding="UTF-8" ?> ...

  7. SpringMVC+MyBatis项目分析与开发实例

    一.用到的Jar包 <!-- ************ Spring测试包 ************* --><artifactId>spring-test</artif ...

  8. net SqlBulkCopy拷贝数据的问题

    服务器配置:windows 2008 ,sql server 2008, oracle 10g. 在本地和同样配置的其他服务器上同样的程序,数据200万都很快就采集过来了,但是在发布的服务器上,如果b ...

  9. 在CentOS安装cobbler自动化部署软件

    #!/bin/bash##cobbler server addressip=192.168.119.133#DHCP server net and address fanweinet=192.168. ...

  10. [转]MySQL主从复制原理介绍

    MySQL主从复制原理介绍 一.复制的原理 MySQL 复制基于主服务器在二进制日志中跟踪所有对数据库的更改(更新.删除等等).每个从服务器从主服务器接收主服务器已经记录到其二进制日志的保存的更新,以 ...