Socket通信

之前在开发中,有接触到socket的相关知识,如:UDP的单播,多播,广播等功能,TCP的点对点传输,传输文字,图片,语音等。但是仍然不是太了解socket。这里做一下记录,方便以后回头看。
*** 这里先介绍TCP通信。

TCP--------Transmission Control Protocol的缩写,意为传输控制协议。

TCP是一种面向连接、可靠的、基于字节流的传输层通信协议。在简化的计算机网络OSI模型中,它完成第四层—传输层 所指定的功能,用户数据报(UDP)是同一层内另一个重要的传输协议。在因特网协议族(Internet protocol suite)中,TCP层是位于IP层之上、应用层之下的中间层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。

工作流程大致如下:

应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分区成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传输单元(MTU)的限制)。之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。TCP层为了保证不发生丢包,就给每一个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的包发回一个相应的确认(ACK);如果发送端实体在合理的往返延时(RTT)内未收到确认,那么对应的数据包就被假设为已丢失,将进行重传。TCP用一个 检验和 的函数来校验数据是否有错误:在发送和接收时都要计算校验和。

对于TCP而言,客户端跟服务端建立连接,需要经过"三次握手",而关闭连接,则需要经过"四次挥手"。另外,还有就是它的确认机制 和 重传机制。

确认机制:就是在一端收到消息后会给发送端返回确认消息,告诉对方"我收到了",以确保传输的可靠性。

重传机制:TCP协议用于控制数据段是否需要重传的依据是设立重发定时器。在发送一个数据段的同时启动一个重传,如果在重传超时前收到确认就关闭该重传。如果重传超时前没有收到确认,则重传该数据段。在选择重发时间的过程中,TCP必须具有自适应性。它需要根据互联网当时的通信情况,给出合适的重发时间。

这里只是做一下记录,以后遇到TCP通信的话可以有一些方向来依循。

附:
WebSocket是什么?与Http有什么关系?Websockt的持久连接又是什么?

a. WebSocket一种在单个 TCP 连接上进行全双工通讯的协议。能够实现服务端给客户端推送,实时同步。

b. 都采用TCP协议
Websocket使用和 HTTP 相同的 TCP 端口。
Websocket 通过 HTTP/1.1 协议的101状态码进行握手。

c. WebSocket 允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值