首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

网络协议之:socket协议详解之Socket和Stream Socket

socket建立连接的基础是IP协议,IP协议被用来进行数据的封装和分组,然后才能够在网络上进行传输。这种依赖于IP协议socket,又叫做network socket。...其中IP地址和端口定义了连接的对象,协议定义的是连接方式。 基于不同的协议,可以衍生出不同的类型的sockets。...比如依赖于TCP协议的叫做Stream sockets,依赖于UDP协议的叫做Datagram sockets,依赖于local files来进行数据传输的叫做Unix Domain Sockets....)是最常用也是极其高效的一种协议。...对于Stream Socket来说,它是有向性的,数据package需要从一个地址通过网络传递到另外一个地址,同时还需要接受到对方的处理返回结果,在这个过程中通常使用的就是TCP协议

2K21

网络协议之:socket协议详解之Datagram Socket

简介 上一篇文章我们讲解了Socket的分类和最常用到的Stream Socket,Stream Socket一般是基于TCP协议的,所以我们经常在web服务中能够看到他们的身影。...当然TCP协议有个孪生兄弟叫做UDP,那么基于UDP来做传输协议socket协议就叫做Datagram Socket,今天我们一起来详细了解一下Datagram Socket。...什么是Datagram Socket 和有连接的Stream Socket不同,Datagram Socket是无连接的。...Datagram Socket通常使用的就是UDP协议作为底层的数据传输协议。 对于UDP来说,因为UDP协议本身并不会保证数据的顺序和数据异常的处理,这些都需要在应用程序中自己实现。...默认情况下nc使用的是TCP协议,如果要使用udp则需要使用-u这个参数。

1.1K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    网络协议之:socket协议详解之Unix domain Socket

    简介 之前的文章我们讲到了Socket中的Stream Socket和Datagram Socket,这两种Socket通常分别是基于tcp和udp协议来进行数据的传输。...那么今天我们会来讲解一个特殊的socket,这个socket不需要使用传统的IP地址和端口,而是使用文件系统来进行程序之间的数据交互,并且这样的socket只能使用在unix系统上。...这样的socket就是今天我们要讲解的Unix domain Socket。 什么是Unix domain Socket 什么是Unix domain Socket呢?...对于程序本身来说,只需要读取和写入共享的socket文件即可,也就是说不同的程序之间通过socket文件来进行数据交互。...和基于IP和端口的Socket一样,Unix domain Socket也可以分为Stream Socket和Datagram Socket

    2.2K50

    IP协议格式

    一、IP协议 IP协议是TCP/IP协议族所依赖的传送机制,提供无连接不可靠的数据报服务。...的无连接特性意味着每个IP报文都是独立寻径的,因此当一个源主机发送多个报文给同一目的主机时,这些报文可能出现错序,丢失或者部分报文产生错误等现象,因此为了保证数据传送的可靠性,必须在IP层之上通过TCP协议提供有序...1.IP协议格式 IP报文由报文头部和数据两部分构成,其中头部信息格式如下图所示,头部占20-60个字节,无选项option时,头部为20字节,最多可以携带40字节选项,报文最大长度为65535...之所以需要总长度这个字段,是因为在某些情况下底层协议为了满足最小帧长的限制,会添加填充数据,例如以太协议要求每个数据帧最小必须为46字节,当来自上层的IP报文总长度小于46字节时,将添加填充数据以满足最小帧长...(9)协议(protocol) 8比特,用于标识IP报文承载的上层数据的协议类型,例如可以是TCP,UDP,ICMP和IGMP等。 (10)头部校验和(check) 16比特,IP头部数据的检验和。

    1.5K10

    socket中的byte消息格式设计

    这二天在研究webabcd的socket多人聊天室,想尝试增加一些功能,比如:允许用户除发送文字外,还能发送图片或文件。...问题: socket发送数据时,只能发送byte[]数组,且无法附带其它用户自定义参数,服务端如何知道用户发过来的是文字还是图片或是文件呢,所以只能在byte数组上动脑筋了. silverlight中,...FileStream,近而变成byte数组,初步想法是在数组前后加一些标记之类,比如最开始几个字节是"img,txt,file"中对应的一个,这样服务端接收到以后,通过拆解分析就能知道用户发过来的何种格式...class Program     { static void Main(string[] args)         { string msg = "^txt^jimmy^Hello^";//格式

    74170

    socket和TCPIP协议族的关系

    以前也编写过网络通信的程序,就是实现一个客户端与一个服务器通信相互发送消息,在程序中会使用一样东西叫做socket套接子,当时知道socket是应用层到下层的接口,但一直很难直观地理解socket到底是什么东西...本文来探究一下socket和TCP/IP协议族的关系,加深理解。...春恋慕 TCP/IP协议族中的数据链路层、网络层、传输层协议是在操作系统内核中实现的,因此操作系统需要实现一组系统调用,使得应用程序能够访问这些协议提供的服务。...实现这组系统调用的API就是socket。...socket是一套通用网络编程接口,他不但可以访问内核中的TCP/IP协议栈,而且可以访问其他网络协议栈。

    27010

    TCP与UCP协议,及socket编程

    TCP是Tranfer Control Protocol的 简称,是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流。...发送方和接收方的成对的两个socket之间必须建 立连接,以便在TCP协议的基础上进行通信,当一个socket(通常都是server socket)等待建立连接时,另一个socket可以要求进行连接,一旦这两个...3,UDP是一个不可靠的协议,发送方所发送的数据报并不一定以相同的次序到达接收方 TCP:1,面向连接的协议,在socket之间进行数据传输之前必然要建立连接,所以在TCP中需要连接...2,TCP传输数据大小限制,一旦连接建立起来,双方的socket就可以按统一的格式传输大的 数据。...3,TCP是一个可靠的协议,它确保接收方完全正确地获取发送方所发送的全部数据。

    58710

    python3--socket编程(udp协议)

    基于UDP协议socket udp是无连接的,启动服务之后可以直接接受消息,不需要提前建立连接,UDP必须是server端先接受消息 简单版 server端代码 import socket # ...创建一个服务器的套接字基于udp,type=socket.SOCK_DGRAM表示使用udp协议 udp_sk = socket.socket(type=socket.SOCK_DGRAM) udp_sk.bind...server端代码 import socket # 创建一个服务器的套接字基于udp,type=socket.SOCK_DGRAM表示使用udp协议 udp_sk = socket.socket(type...# 创建一个服务器的套接字基于udp,type=socket.SOCK_DGRAM表示使用udp协议 udp_sk = socket.socket(type=socket.SOCK_DGRAM) udp_sk.bind... = sk.recvfrom(1024)     sk.sendto(time.strftime('%Y-%m-%d %H:%M:%S').encode('utf-8'), addr)  # 发送一个格式化时间给

    1K20

    【1】HTTP协议Socket接口区别

    内容提要:     1.网络七层模型     2.什么是HTTP协议     3.什么是Socket接口 1.网络七层模型 ? ?...第六层:表示层 它包括数据的表示形式,文字,图形,图片等都有各自的格式,就像图片的格式有JPG,GIF等。...3.什么是Socket接口 Socket接口是对TCP/UDP协议封装的接口。 要想明白 Socket,必须要理解 TCP 连接。...Socket 是对 TCP/IP 协议的封装,Socket 只是个接口不是协议,通过 Socket 我们才能使用 TCP/IP 协议,除了 TCP,也可以使用 UDP 协议来传递数据。...创建 Socket 连接的时候,可以指定传输层协议,可以是 TCP 或者 UDP,当用 TCP 连接,该Socket就是个TCP连接,反之。

    1.8K10

    python3--socket编程(tcp协议)

    socket概念 socket层 ? 理解socket Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。...在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议 简单来说 其实站在你的角度上看...udp协议 .TCP(Transmission Control Protocol)可靠的、面向连接的协议(eg:打电话)、传输效率低全双工通信(发送缓存&接收缓存)、面向字节流。...套接字(socket)初使用 基于TCP协议socket tcp是基于链接的,必须先启动服务端,然后再启动客户端去链接服务端 windows如果不通,注意关闭防火墙 server端 import socket...socket(tcp协议)编程,多人聊天 对于一个tcp连接,客户端和server对话没有结束,那么其它客户端全部都不能与服务器发消息对话 示例 server端代码 import socket sk

    1.7K30

    图解 tRPC 协议格式

    tRPC-Go 中的 codec 模块的 FrameHead 的 construct 方法实现了 tRPC 协议栈的构建过程:// construct 构造整个帧的二进制数据func (h *FrameHead...一般自定义协议中会用到魔数,常见也都是 2 个字节:用于快速识别字节流是否是程序能够处理的,能处理才进行后面的 耗时 业务操作,如果不能处理,尽快执行失败,断开连接等操作。...2 字节头部长度:限制了协议的请求头不能超过 64KB,所以使用中,如果有大量透传字段的业务场景,需要注意这个限制。...tRPC 协议头部的格式使用 pb 定义,对应生成的 golang 结构体为 trpc.RequestProtocol;4 字节帧的总长度: 源码中默认的最大长度为 codec.DefaultMaxFrameSize...参考资料自定义协议中魔数的作用

    15810

    Quic 协议详解--包格式

    前言 上一篇中简单的讲述了讲述了Quic的一些特性,本篇将讲述quic的包类型与格式。...标示一个连接 Quic Version : 32位 表示Quic 协议版本.只有当PUBLIC_FLAG_VERSION 被设置才会存在这个字段。...为了防止降级攻击,client在第一个包中指定的协议版本和server应答的一系列支持的版本号都必须作为加密握手包的数据部分。...client需要去验证 握手过程中的server提供的版本列表和版本协议包中的列表是匹配的。server也需要验证,握手过程中client的版本,server确实不支持。...quic协议的任意一方都可以正常的终止一条流,有如下三种方式终止流: 1,正常终止:因为stream是双向的,所以它可以半关闭和关闭,当一方发送了一个Frame并且在此Frame中置位Fin,该stream

    10.8K70
    领券