即时通讯开发之tcp/ip中的tcp协议概述

wecloud1314 wecloud1314     2023-02-07     501

关键词:

终于看到了 TCP 协议,这是 TCP/IP 详解里面最重要也是最精彩的部分,要花大力气来读。前面的 TFTP 和 BOOTP 都是一些简单的协议,就不写笔记了,写起来也没啥东西。



TCP 和 UDP 处在同一层---运输层,但是 TCP 和 UDP 最不同的地方是,TCP 提供了一种可靠的数据传输服务,TCP 是面向连接的,也就是说, 利用 TCP 通信的两台主机首先要经历一个“拨打电话”的过程,等到通信准备结束才开始传输数据,最后结束通话。所以 TCP 要比 UDP 可靠的多,UDP 是把 数据直接发出去,而不管对方是不是在收信,就算是 UDP 无法送达,也不会产生 ICMP 差错 报文,这一经时重申了很多遍了。

 

把 TCP 保证可靠性的简单工作原理摘抄如下

 应用数据被分割成 TCP 认为最适合发送的数据块。这和 UDP 完全不同,应用程序产生的 数据报长度将保持不变。

 当 TCP 发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能 及时收到一个确认,将重发这个报文段。

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

 TCP 将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输 过程中的任何变化。如果收到段的检验和有差错, TCP 将丢弃这个报文段和不确认收到此报文段(希望发端超时并重发)。

 既然 TCP 报文段作为 IP 数据报来传输,而 IP 数据报的到达可能会失序,因此 TCP 报文段 的到达也可能会失序。如果必要, TCP 将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。即时通讯聊天软件app开发可以加蔚可云的v:weikeyun24咨询

 

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

从这段话中可以看到,TCP 中保持可靠性的方式就是超时重发,这是有道理的,虽然 TCP 也可以用各种各样的 ICMP 报文来处理这些,但是这也不是可靠的,最可靠的方式就是只要不得到确认,就重新发送数据报,直到得到对方的确认为止。

TCP 的首部和 UDP 首部一样,都有发送端口号和接收端口号。但是显然,TCP 的首部信息要比 UDP 的多,可以看到,TCP 协议提供了发送和确认所需要的所有必要的信息。

可以想象一个 TCP 数据的发送应该是如下的一个过程:

    双方建立连接;
    发送方给接受方 TCP 数据报,然后等待对方的确认 TCP 数据报,如果没有,就重新发,如果有,就发送下一个数据报;
    接受方等待发送方的数据报,如果得到数据报并检验无误,就发送 ACK(确认)数据报,并等待下一个 TCP 数据报的到 来。直到接收到 FIN(发送完成数据报);
    中止连接。


可以想见,为了建立一个 TCP 连接,系统可能会建立一个新的进程(最差也是一个线程),来进行数据的传送。

即时通讯开发之tcp/ip中的ip协议arp协议

IP协议是TCP/IP协议的核心,所有的TCP,UDP,IMCP,IGCP的数据都以IP数据格式传输。要注意的是,IP不是可靠的协议,这是说,IP协议没有提供一种数据未传达以后的处理机制--这被认为是上层协议--TCP或UDP要做的事情。所以这也就出现了TCP是一... 查看详情

即时通讯开发之tcp/ip基本概念

在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别。就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样。计算机使用者意识... 查看详情

即时通讯tcpudp

TCP协议与UDP协议的区别   首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信!TCP/IP协议是一个协议簇。里面包括很... 查看详情

即时通讯开发之详解tcp/ip中的广播和多播igmp协议

单播是说,对特定的主机进行数据传送。例如给某一个主机发送IP数据包。这时候,数据链路层给出的数据头里面是非常具体的目的地址,对于以太网来说,就是网卡的MAC地址(不是FF-FF-FF-FF-FF-FF这样的地址)。现在的具有路由功能的主... 查看详情

即时通讯开发之tcp/ip基本概念

在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别。就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样。计算机使用者意识... 查看详情

即时通讯开发之详解tcp/ip中的ip选路动态选路

...一个网络,在匹配的时候只要匹配一下网络号就可以了。即时 查看详情

mqtt是ibm开发的一个即时通讯协议,构建于tcp/ip协议上,是物联网iot的订阅协议,借助消息推送功能,可以更好地实现远程控制

...掌握的机制原理,主要讲解理论。背景MQTT是IBM开发的一个即时通讯协议。MQTT构建于TCP/IP协议上,面向M2M和物联网IoT的连接协议,采用轻量级发布和订阅消息传输机制。Mosquitto是一款实现了MQTTv3.1协议的开源消息代理软件,提供轻量... 查看详情

ipc之socket的使用(代码片段)

一、概述  我们知道在开发中,即时通讯、设备间的通信都是使用Socket实现,那当然用它来实现进程间通信更是不成问题。Socket即套接字,是一个对TCP/IP协议进行封装的编程调用接口(API)。通过Socket,我们才能在Andorid平台上... 查看详情

浅析im即时通讯开发中tcp和udp的区别

网络协议是每个搞网络通信应用开发(比如IM、推送、网关等等)的程序员都必须要掌握的基础知识,TCP/IP协议簇中有两个最具有代表性的传输层协议——分别是TCP和UDP。有过网络通信开发经验的同学们都知道,TC... 查看详情

im即时通讯实现原理

即时通讯(InstantMessenger,简称IM)软件多是基于TCP/IP和UDP进行通讯的,TCP/IP和UDP都是建立在更低层的IP协议上的两种通讯传输协议。前者是以数据流的形式,将传输数据经分割、打包后,通过两台机器之间建立起的虚电路,进行... 查看详情

im即时通讯实现原理

即时通讯(InstantMessenger,简称IM)软件多是基于TCP/IP和UDP进行通讯的,TCP/IP和UDP都是建立在更低层的IP协议上的两种通讯传输协议。前者是以数据流的形式,将传输数据经分割、打包后,通过两台机器之间建立起的虚电路,进行... 查看详情

tcp编程之网卡信息获取和域名解析

... TCP/IP传输协议,即传输控制/网络协议,也叫作网络通讯协议。它是在网络的使用中的最基本的通信协议。TCP/IP传输协议对互联网中各部分进行通信的标准和方法进行了规定。并且,TCP/IP传输协议是保证网络数据信息及时、... 查看详情

即时通讯开发之tcp交互数据流成块数据流

目前建立在TCP协议上的网络协议特别多,有telnet,ssh,有ftp,有http等等。 这些协议又可以根据数据吞吐量来大致分成两大类:   交互数据类型:例如telnet,ssh,这种类型的协议在大多数情况下只是做小流量的数据交换,比如说按一... 查看详情

socket编程之----tcp服务器

...多概念:在TCP/IP协议中,“IP地址+TCP或UDP端口号”唯标识络通讯中的个进程,“IP地址+端口号”就称为socket。在TCP协议中,建连接的两个进程各有个socket来标识,那么这两个socket组成的socket pair就唯标识个连接。socket本有“插座”的... 查看详情

协议系列之tcp/ip协议

...四层。应用层、传输层、网络层、链路层)。这个协议族中的IP协议定位到哪台计算机,而详细到这台计算机的哪个port( 查看详情

tcp/ip(网络通讯协议)

...包.(传输层) RFC是tcp/ip协议的标准文档.tcp/ip,又名:网络通讯协议 查看详情

im即时通讯实现的原理

IM技术全称Instant Messaging,中文翻译“即时通讯”,它是一种使人们能在网上识别在线用户并与他们实时交换消息的技术,是电子邮件发明以来迅速崛起的在线通讯方式。IM的出现和互联网有着密不可分的关系,IM... 查看详情

1.4分布式-通讯协议tcp/ip

服务器和浏览器的通讯依靠http协议,今天就来分析一下http协议的具体内容以及https的加密过程。除了这些协议,为了增加服务器和浏览器交互的可拓展性,也出现了rest风格的请求方式,方便调用接口。HTTP协议的概述1.客户端和... 查看详情