简单理解socket协议

article/2025/8/27 13:48:11

TCP/IP

要想理解socket首先得熟悉一下TCP/IP协议族, TCP/IPTransmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,定义了主机如何连入因特网及数据如何再它们之间传输的标准,

从字面意思来看TCP/IP是TCP和IP协议的合称,但实际上TCP/IP协议是指因特网整个TCP/IP协议族。不同于ISO模型的七个分层,TCP/IP协议参考模型把所有的TCP/IP系列协议归类到四个抽象层中

应用层:TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等

传输层:TCP,UDP

网络层:IP,ICMP,OSPF,EIGRP,IGMP

数据链路层:SLIP,CSLIP,PPP,MTU

每一抽象层建立在低一层提供的服务上,并且为高一层提供服务,看起来大概是这样子的

                       

估计有兴趣打开此文的同学都对此有一定了解了,加上我也是一知半解,所以就不详细解释,有兴趣同学可以上网上搜一下资料

维基百科

百度百科

在TCP/IP协议中两个因特网主机通过两个路由器和对应的层连接。各主机上的应用通过一些数据通道相互执行读取操作


socket

我们知道两个进程如果需要进行通讯最基本的一个前提能能够唯一的标示一个进程,在本地进程通讯中我们可以使用PID来唯一标示一个进程,但PID只在本地唯一,网络中的两个进程PID冲突几率很大,这时候我们需要另辟它径了,我们知道IP层的ip地址可以唯一标示主机,而TCP层协议和端口号可以唯一标示主机的一个进程,这样我们可以利用ip地址+协议+端口号唯一标示网络中的一个进程。

能够唯一标示网络中的进程后,它们就可以利用socket进行通信了,什么是socket呢?我们经常把socket翻译为套接字,socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。

socket起源于UNIX,在Unix一切皆文件哲学的思想下,socket是一种"打开—读/写—关闭"模式的实现,服务器和客户端各自维护一个"文件",在建立连接打开后,可以向自己文件写入内容供对方读取或者读取对方内容,通讯结束时关闭文件。

socket通信流程

socket是"打开—读/写—关闭"模式的实现,以使用TCP协议通讯的socket为例,其交互流程大概是这样子的

服务器根据地址类型(ipv4,ipv6)、socket类型、协议创建socket

服务器为socket绑定ip地址和端口号

服务器socket监听端口号请求,随时准备接收客户端发来的连接,这时候服务器的socket并没有被打开

客户端创建socket

客户端打开socket,根据服务器ip地址和端口号试图连接服务器socket

服务器socket接收到客户端socket请求,被动打开,开始接收客户端请求,直到客户端返回连接信息。这时候socket进入阻塞状态,所谓阻塞即accept()方法一直到客户端返回连接信息后才返回,开始接收下一个客户端谅解请求

客户端连接成功,向服务器发送连接状态信息

服务器accept方法返回,连接成功

客户端向socket写入信息

服务器读取信息

客户端关闭

服务器端关闭

三次握手

在TCP/IP协议中,TCP协议通过三次握手建立一个可靠的连接

第一次握手:客户端尝试连接服务器,向服务器发送syn包(同步序列编号Synchronize Sequence Numbers),syn=j,客户端进入SYN_SEND状态等待服务器确认

第二次握手:服务器接收客户端syn包并确认(ack=j+1),同时向客户端发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态

第三次握手:第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手

定睛一看,服务器socket与客户端socket建立连接的部分其实就是大名鼎鼎的三次握手


原文地址:http://www.cnblogs.com/dolphinX/p/3460545.html


http://chatgpt.dhexx.cn/article/KyffrFpa.shtml

相关文章

Http、TCP/IP协议与Socket之间的区别

HTTP协议:简单对象访问协议,对应于应用层 ,HTTP协议是基于TCP连接的 tcp协议: 对应于传输层 ip协议: 对应于网络层 TCP/IP是传输层协议,主要解决数据如何在网络中传输;而HTTP是应用层协…

简单理解Socket 协议

前几天和朋友聊天,朋友问我怎么最近不写博客了,一个是因为最近在忙着公司使用的一些控件的开发,浏览器兼容性搞死人;但主要是因为这段时间一直在看html5的东西,看到web socket时觉得很有意思,动手写几个dem…

车载以太网之SomeIP协议

车载以太网之SomeIP协议 1、SomeIP含义2、SomeIP通信协议3、SomeIP数据格式3.1 数据格式含义3.2 处理数据能力的要求 4、面向服务的协议4.1 Method4.2 Event(FF)4.3 Field4.4 Autosar接口说明 5、两个ECU间SomeIP数据的通讯过程6、SomeIP序列化6.1 序列化和反序列化过程6.2 序列…

深入理解 TCP/IP 协议栈,使用 Raw Socket

对于 TCP/IP 协议栈,我们或多或少都使用 Socket API 实现了一些小程序,甚至有一些朋友结合多路复用技术实现了一些简单的并发服务器。但是,对于以下问题,大家是否有清晰的答案呢? WireShark 的实现原理是什么&#xf…

基于TCP协议的Socket通信

基于TCP协议的Socket通信【一】 前言TCP/IP UDP是什么? Socket相关什么是Socketsocket通信步骤socket服务端的编写socket客户端的编写 前言 TCP/IP UDP是什么? 在学习socket之前的必要步骤,具体内容请移步另一篇博文TCP/IP 上篇TCP/IP偏向初…

C#利用Socket实现TCP/IP协议通讯

利用Socket实现服务器给客户端发送信息,客户端给服务端发送数据,服务端异步接收单个客户端数据(持续),服务端异步接收多个客户端数据(持续)。 实现效果如上 客户端代码 using System; using S…

HTTP协议和TCP/IP协议与Socket之间的区别

HTTP协议:简单对象访问协议,对应于应用层 ,HTTP协议是基于TCP连接的tcp协议: 对应于传输层ip协议: 对应于网络层 TCP/IP是传输层协议,主要解决数据如何在网络中传输;而HTTP是应用层协议…

网络协议:一文搞懂Socket套接字

本篇内容包括:Socket 套接字的简介、Socket 套接字的分类、Java 中的 Socket 即 java.net.ServerSocket、java.net.Socket 的使用,以及Java 使用套接字 Scoket 编程的Demo。 一、Socket 简介 TCP(传输控制协议)是一种面向连接的、…

Java Socket通信之TCP协议

文章目录 一、 Java流套接字通信模型1.TCP模型2.TCP Socket常见APIServerSocket APISocket API 二、TCP流套接字编程1.回显服务器2.多线程服务器 三、TCP中的长短连接四、协议1. 为什么需要协议?2. 封装/分用 VS 序列化/反序列化3. 自定义协议 紧接着 Java Socket通…

TCP/IP协议讲解

TCP/IP与OSI参考模型 应用层:向用户提供一组常用的应用程序,比如电子邮件、文件传输访问、虚拟终端等。 应用层协议:两个主机的两个应用程序之间进行相互交流的数据格式。 运行在TCP协议上的协议: 1、HTTP(Hypertext…

tcp/ip协议与socket介绍

1、tcp/ip五层协议模型 应用层、传输控制层、网络层、数据链路层、物理 2. 应用层 直接向用户提供服务,完成用户希望在网络上完成的各种工作。如curl命令。 3. 传输控制层 3.1 TCP和UDP协议 TCP协议:面向连接的可靠传输协议。利用TCP进行通信时&…

socket协议介绍

2019独角兽企业重金招聘Python工程师标准>>> 本文主要讲述了Socket协议脚本的基础知识和编写方法,让大家能够在短时间内快速掌握简单的Socket协议脚本的编写方法。      1.socket协议介绍      Socket协议有万能协议之称,很多系统底层都是用的socket协议,…

Socket 网络协议 等

🍬 什么是服务器? 对外提供服务的一套软件,放在网络上 (IP地址) 什么是客户端? 是为了连接服务器的一个软件 网络编程的3要素 协议 IP地址 局域网IP地址 公网IP地址(买的) 查看…

socket实现http协议

1、在B/S架构中,Web浏览器与Web服务器之间的一次HTTP请求与响应:需要完成以下步骤: http://localhost:8089/index.html 1)、浏览器端根据所在的HTTP协议解析出对应的url域名:localhost 2)、通过DNS域名解析&#xf…

TCP/IP协议族通信的socket介绍及编程

一、概念介绍 TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,是一个工业标准的协议集,它是为广域网(WANs)设计的。 UDP(User Data Protocol,用…

tensorflow之argmax函数独特讲解

在讲解之前,先来一个该函数的参数说明: argmax(a, axisNone, outNone) # a 表示array # axis 表示指定的轴,默认是None,表示把array平铺, # out 默认为None,如果指定,那么返回的结果会插入其中…

南京邮电大学离散数学实验三:编程实现整除关系这一偏序关系上所有盖住关系的求取,并判定对应偏序集是否为格

实验原理及内容 说明:这部分内容主要包括: 1、形式化描述实验中所使用的数据结构和存储结构,给出函数之间的调用关系和数据传递方式; 2、给出核心算法的C或Java等语言的源代码,并加上详细注释,分析算法的…

组合学笔记(六)局部有限偏序集的关联代数,Möbius反演公式

tags: Combinatorics 写在前面 前面铺垫了很多偏序集和格,分配格等的基本知识, 下面开始以这些代数结构为研究对象, 探寻其上的一些性质与关系, 我们先以关联代数的定义开始说起. 关联代数简介 定义 令 I n t ( P ) \mathrm{Int}(P) Int(P)表示 P P P上所有的区间的集合, …

离散中偏序集、乘积群、关系的性质和集合的相关证明

离散证明题&#xff08;三&#xff09; 9.令❄是定义在有限集合A上的一个二元运算&#xff0c;若对于∀a,b∈A&#xff0c;❄满足①aa❄a②a❄bb❄a③a❄(b❄c)(a❄b)❄c,在A上定义一个关系C比如a≤b<>aa❄b. 证明&#xff1a;(1)(A,≤)是一个偏序集 (2)∀a,b∈A,a∧ba❄…