《程序员的IM之路(一) 基础篇》

本文介绍了IM的基础知识,包括TCP和UDP的连接状态与建立关闭,强调了TCP长连接保活的重要性,以及心跳设计与连接重建的策略。此外,还讨论了IM系统中的连接层与业务层解耦、集群和数据去中心化的设计思想,为理解IM系统架构提供了基础。
摘要由CSDN通过智能技术生成

1.聊聊通信

  什么是通信?我认为,但凡是通信双方通过直接使用器官交流的方式都不是通信,只有通信双方通过某种媒介发生交流才能算通信。按照这个定义,那么,面对面交谈,隔山喊话,打手势都不属于通信的范畴。但是如果借助某种媒介来进行交流,比如纸,电波,光纤,甚至是人,只要符合借助媒介的交流方式,那就是通信。
  通信在人类社会发展历史中扮演了极其重要的角色,是人类社会发展的一个强需求,从烽火、信使到驿站,再到邮政、无线电波、电话,以及现在的卫星与网络,可以说随着人类社会进步,人们对通信的需求越来越强,依赖也越来越深,对通信的速度、质量要求越来越高。
  21 世纪最重要的是什么?是信息。而信息的传播途径,几乎就是通信。所以,得通信者得天下。看看互联网界吧,可以说所有的互联网公司都可以归纳为围绕通信做业务的企业。

2.What’s IM?

  IM,Instant Message 的简称,网络时代,最重要的通信实现,便是 IM 。大如 QQ 、微信、陌陌,小到小公司自己做的即时通讯系统,都是 IM 。 IM 不仅能做聊天工具,作为通信基础它还深入教育、金融、电商、医疗、游戏等各行各业。
  要做一个稳定、可靠、高并发的 IM 并不是一件易事,这不光涉及到巨大的研发成本,还有不菲的硬件成本,维护成本。所以通常只有大公司才会研发搭建自己的 IM ,而中小型公司通常会采用市面上成熟的商业化 IM 产品,比如网易云信,融云,环信。

3.基础知识介绍

1 TCP 与 UDP 介绍

TCP 和 UDP 都是传输层协议,它们有不同的优缺点,也适用于不一样的场景。

TCP UDP
可靠性 TCP 有握手机制和流量控制机制、重传机制,它是可靠的, 而 UDP 不可靠
是否建立连接 TCP 在传输数据前,会建议一条虚拟连接,而 UDP 不需要。
资源占用 服务器需要维护大量 TCP 连接,且 TCP 连接状态重,所以 TCP 在资源占用上高于 UDP 。
传输速度 UDP 传输前不需要握手,所以速度比 TCP 更快。

1 TCP 的连接状态

  TCP 的连接状态共有 11 种,要理解 TCP 连接的建立关闭,将连接状态结合在一起理解,收益更大。
  
  下面是一张非常著名的 TCP 状态变化图,出自《TCP/IP详解》一书。三次握手,四次挥手,同时打开,同时关闭都可以在图中推演出来。
  
TCP状态变化图

状态 说明
CLOSED 初始状态,表示 TCP 连接是“关闭着的”或“未打开的”。
LISTEN 表示服务器端的某个 SOCKET 处于监听状态,可以接受客户端的连接。
SYN_SENT 表示客户端第一次握手发送 SYN 报文后的状态。
SYN_RCVD 表示服务端在第二次握手时,接收到了 SYN 报文的状态。当 TCP 连接处于此状态时,再收到客户端的 ACK 报文,它就会进入到ESTABLISHED 状态。
ESTABLISHED 表示 TCP 连接已经成功建立。
FIN_WAIT
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值