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

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

一、Socket 简介 TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的通信协议,数据在传输前要建立连接,传输完毕后还要断开连接。...Socket 的典型应用就是 Web 服务器和浏览器:浏览器获取用户输入的 URL,向服务器发起请求,服务器分析接收到的 URL,将对应的网页内容返回给浏览器,浏览器再经过解析和渲染,就将文字、图片、视频等元素呈现给用户...这类套接字中,传输数据之前必须在两个应用进程之间建立一条通信连接, 这就确保了参与通信的两个应甩进程都是活动并具响应的e当连接建立之卮应用进程只要通过套接字向 TCP 层发送数据流,而另一个应用进程便可以接收到相应的数据流...2、数据报套接字(SOCK_DGRAM) 提供了一种无连接的服务,通信双方不需要建立任何显式连接,数据可以发送到指定的套接字,并且可以从指定的套接字接收数据。...Socket(InetAddress address, int port) // 创建一个流套接字并将其连接到指定主机上的指定端口号 Socket(String host, int port) // 创建一个套接字并将其连接到指定远程地址上的指定远程端口

2.6K21

网络编程之Http、TCPIP协议与Socket之间的区别

握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。...为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。...连接确认:当服务器端套接字监听到或者说接收到客户端套接字的连接请求时,就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,双方就正式建立连接。...而http是个应用层的协议,它实际上也建立在TCP协议之上(HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力)。...短连接 连接->传输数据->关闭连接 HTTP是无状态的,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。

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

    HTTP与TCP的区别和联系

    握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连 接之前,TCP 连接都将被一直保持下去。...连接确认:当服务器端套接字监听到或者说接收到客户端套接字的连接请求时,就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户 端,一旦客户端确认了此描述,双方就正式建立连接。...TCP连接基础上的,简单的说,TCP就是单纯建立连接,不涉及任何我们需要请求的实际数据,简单的传输。...总体就是C发送一个HTTP请求给S,S收到了这个http请求,然后返回给Chttp响应,然后C的中间件或者说浏览器把这些数据渲染成为了网页,展示在用户面前。...TCP/IP实际上是一组协议,它包括上百个各种功能的协议,如:远程登录、文件传输和电子邮件等,而TCP协议和IP协议是保证数据完整传输的两个基本的重要协议。

    3.5K30

    史上最全python面试题详解(四)(附

    3、网络层 在位于不同地理位置的网络中的两个主机系统之间提供连接和路径选择。Internet的发展使得从世界各站点访问信息的用户数大大增加,而网络层正是管理这种连接的层。   ...四次挥手: 初始状态:客户端A和服务器B之间已经建立了TCP连接,并且数据发送完成,打算断开连接,此时客户端A和服务器B是等价的,双方都可以发送断开请求,下面以客户端A主动发起断开请求为例。...套接字,也称为BSD套接字,是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程。...应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。 1.服务器先用 socket 函数来建立一个套接字,用这个套接字完成通信的监听。 ...3.服务器调用 listen 函数,使服务器的这个端口和 IP 处于监听状态,等待客户机的连接。  4.客户机用 socket 函数建立一个套接字,设定远程 IP 和端口。

    70870

    TCP和Http的区别! 我都搞懂了,你就别迷糊了!

    握 手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连 接之前,TCP 连接都将被一直保持下去。...HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。...连 接确认:当服务器端套接字监听到或者说接收到客户端套接字的连接请求时,就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户 端,一旦客户端确认了此描述,双方就正式建立连接。...总体就是C发送一个HTTP请求给S,S收到了这个http请求,然后返回给Chttp响应,然后C的中间件或者说浏览器把这些数据渲染成为了网页,展示在用户面前。...TCP/IP实际上是一组协议,它包括上百个各种功能的协议,如:远程登录、文件传输和电子邮件等,而TCP协议和IP协议是保证数据完整传输的两个基本的重要协议。

    6.1K71

    TCP通信

    TCP通信 1.前期回顾 1.1 IP地址 IP地址标识电脑,端口标识程序 1.2 socket套接字 一种通信手段 套接字用完一定要关闭 sendto 两个参数内容为bytes类型的,IP是字符串,端口是数字...scp -r 目标用户名@目标主机IP地址:/目标文件的绝对路径 /保存到本机的绝对/相对路径 拷贝单个文件可以不加-r拷贝木录时必须加 本地文件到远程(是在本地的桌面进行,不要ssh到Ubuntu...(讲完之后就明白了,暂时忽略) 步骤:创建连接,数据传送,终止连接 使用场景:HTTP / HTTPS / FTP QQ文件传输 浏览器 面向连接 建立链接/通信/关闭链接 可靠传输 应答机制...关闭文件 ----> 8关闭套接字 ----> 9再执行第4步 import socket def main(): # 1 接受用户的连接请求 # 1.1 创建服务器套接字 -- 接受请求...建立连接 2.9 了解TCP的4次挥手 FIN表示完成 除非双方都断开才能完成断开链接,只有一端断开是完不成的 主动端和被动端 意义:忽略2MSL时间(进行补充) 目的:解决前面历史遗留问题

    1.1K20

    面试问到的TCP HTTP 和 Scoket 三者的区别

    Http 协议是建立在 TCP 协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次 Http 请求。...而 TCP 是有状态的长连接?Http 不是建立在 TCP 的基础上吗,为什么还能是短连接?现在明白了,Http 就是在每次请求完成后就把 TCP 连接关了,所以是短连接。...HTTP 都把 TCP 作为底层的传输协议。HTTP 客户首先发起建立与服务器 TCP 连接。一旦建立连接,浏览器进程和服务器进程就可以通过各自的套接字来访问 TCP。...以下是 HTTP 请求 / 响应的步骤: 1、客户端连接到Web服务器 一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。...连接确认 :是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求, 建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,

    1K10

    计算机网络原理 - 第二章

    简答题:面向连接的服务: 查看答案 (1) 在应用层报文开始传送之前,TCP客户和服务器互相交换传输层控制信息,完成握手。在客户进程与服务器进程的套接字之间建立一条逻辑的TCP连接。...①非流水方式持久连接的HTTP1.1:在非流水方式持久连接的HTP1.1中只需建立一条TCP连接即可,全部的请求结束后再断开TCP连接;如教材P62图2.12所示,请求含有3个图片的完整Web内容只需花费...特点如下: FTP 应用使用两个“并行”的 TCP 连接:控制连接和数据连接 FTP 服务器必须在整个会话期间保留用户的状态,即 FTP 是有状态的。...函数 API 作用 int socket() 创建套接字 int close() 关闭套接字 int bind() 绑定套接字的本地端点地址(一般用于服务器端) int listen() 监听状态(只用于服务器端...,仅用于TCP服务器套接字) int connect 将客户端套接字与服务器连接(只用于客户端) int accept 创建新的套接字来与客户套接字建立TCP连接(只用于服务器端) Ssize_t_send

    92020

    Android 进阶12:进程通信之 Socket (顺便回顾 TCP UDP)

    OSI 模型将计算机网络体系结构的通信协议划分为七层,每一层都建立在它的下层之上,同时向它的上一层提供一定服务。...(图片来自:http://www.jianshu.com/p/089fb79e308b) Socket 分为流式套接字和用户数据报套接字,分别使用传输层中的 TCP 和 UDP 协议。...TCP 连接是全双工的,每一端都可以同时发送和接受数据,关闭的时候两端都要关闭各自两个方向的通道,总共相当于要关闭四个。...Socket 被称为“套接字”,它把复杂的 TCP/IP 协议簇隐藏在背后,为用户提供简单的客户端到服务端接口,让我们感觉这边输入数据,那边就直接收到了数据,像一个“管道”一样。 ?...int port) 建立要发送的 UDP 包 调用 DatagramSocket 的 receive() 接收 UDP 包 调用 DatagramSocket.send() 发送 UDP 包 关闭数据报套接字

    2.8K72

    《网络是怎么样连接的》读书笔记 - TcpIP连接(二)

    **Socket连接套接字链接在表面上看就是建立连接,交换数据,断开连接,虽然实际上细节肯定没有那么简单,但是大体上的思路基本不变。...创建完套接字之后,协议栈需要返回标识符号也就是描述符用于标识是哪一个套接字在进行传数据,因为我们可能打开很多套接字连接访问不同的网站,具体的效果是我们浏览器会打开很多个页面,这时候每一个页面都可能需要创建套接字...断开连接这一步需要简单理解为需要一方主动发起断开申请浏览器调用read收发数据同时会收到关闭请求,此时客户端确认请求之后将会停止请求并且开始释放Socket连接。为什么不能用描述符标识应用程序的入口?...协议栈会将接收到的数据复制到应用程序指定的内存地址中,然后将控制流程交回应用程序断开连接断开连接的部分包含断开连接和删除套接字的操作,断开连接也就是经典的四次挥手的操作,而删除套接字则需要注意在协议栈中并没有规定关闭的时间...(服务端结束TCP连接要比客户端早一些)图片套接字和协议栈和对方服务器的交互流程细节还是比较多的,这里可以发现实际上三次握手和四次挥手实际上只是网络连接当中很小的一部分,最后是从连接服务到数据收发到断开连接的一张简单总结图

    70630

    计算机网络原理梳理丨应用层

    域名服务器 域名解析:将域名映射为 IP 地址的过程 域名服务器:为了实现域名解析,需要建立分布式数据库,存储网络中域名与 IP 地址的映射关系,这些数据库存储在域名服务器上,域名服务器根据用户的请求提供域名解析服务...工作过程: 1.客户端 Web 浏览器根据域名向域名服务器查询目标服务器的 IP 地址 2.根据查询出来的 IP 地址建立 TCP 连接 3.建立连接后发送 HTTP 请求报文 (携带 URL)...HTTP 请求方式 非持久连接:建立一个 TCP 连接,传输一个对象就断开连接 1.串行方式请求每个对象,且每次都要新建 TCP 连接,但不会同时建立多条连接 2.并行方式请求每个对象,每个请求建立一个...TCP 连接,会同时产生多条连接 持久连接:建立一个 TCP 连接,传输多个对象 1.非流水方式:建立一个 TCP 连接后,依次顺序传输所有对象,获取完毕后断开 2.流水方式:建立一个 TCP 连接后...可以创建数据报类型套接字、流式套接字和原始套接字三种 数据报套接字:SOCK_DGRAM, 对应 UDP ,不可靠传输 流式套接字:SOCK_STREAM, 对应 TCP ,可靠传输 原始套接字:SOCK_RAW

    77810

    《网络是怎么样连接的》读书笔记 - TcpIP连接(二)

    Socket连接 套接字链接在表面上看就是建立连接,交换数据,断开连接,虽然实际上细节肯定没有那么简单,但是大体上的思路基本不变。...创建完套接字之后,协议栈需要返回标识符号也就是描述符用于标识是哪一个套接字在进行传数据,因为我们可能打开很多套接字连接访问不同的网站,具体的效果是我们浏览器会打开很多个页面,这时候每一个页面都可能需要创建套接字...断开连接 这一步需要简单理解为需要一方主动发起断开申请浏览器调用read收发数据同时会收到关闭请求,此时客户端确认请求之后将会停止请求并且开始释放Socket连接。...协议栈会将接收到的数据复制到应用程序指定的内存地址中,然后将控制流程交回应用程序 断开连接 断开连接的部分包含断开连接和删除套接字的操作,断开连接也就是经典的四次挥手的操作,而删除套接字则需要注意在协议栈中并没有规定关闭的时间...(服务端结束TCP连接要比客户端早一些) 套接字和协议栈和对方服务器的交互流程细节还是比较多的,这里可以发现实际上三次握手和四次挥手实际上只是网络连接当中很小的一部分,最后是从连接服务到数据收发到断开连接的一张简单总结图

    53840

    深入剖析Linux网络设计中网络IO的重要角色

    一、网络编程关注的四个方面 网络编程主要关注四个问题:连接的建立、断开连接、消息到达、消息发送。...失败时返回的错误码: 错误码 含义 EACCES,EPERM 用户在未启用套接字广播标志的情况下尝试连接到广播地址,或者由于本地防火墙规则,连接请求失败。 EADDRINUSE 本地地址已在使用中。...ENOTSOCK 文件描述符sockfd不引用套接字。 EPROTOTYPE 套接字类型不支持请求的通信协议。例如,在尝试将UNIX域数据报套接字连接到流套接字时,可能会发生此错误。...ETIMEDOUT 尝试连接时超时。服务器可能太忙,无法接受新连接。注意,对于IP套接字,当服务器上启用Syncookie时,超时可能很长。...EconReset 对等端重置连接。 EDESTADDRREQ 套接字不是连接模式,并且未设置对等地址。 EFAULT 为参数指定了无效的用户空间地址。 EINTR 在传输任何数据之前发生的信号。

    11620

    【计网】从零开始理解TCP协议 --- TIME_WAIT状态 , CLOSE_WAIT状态,流量控制机制,滑动窗口机制

    所以建立连接和断开连接本质上是没有区别的,那为什么还要强调四次挥手呢?因为一方端口连接,另一方可能还有需要发送的数据,所以有可能是进行四次挥手。...在Tcpserver的回调函数中,当服务端套接字接受到了新的的连接就会创建新线程执行Execute函数。...我通过浏览器与服务端进行连接通信,此时完成一次连接之后,完成一次连接之后并不会关闭套接字文件,所以就会产生CLOSE_WAIT状态!...这个状态存在的目的是为了确保连接被动关闭方能够收到最后一个ACK确认包,同时防止在网络中延迟的数据包影响新连接的建立。所以持续一段时间才关闭连接!...紧急指针是很少使用的,一般可以通过两个端口建立两个连接,一个进行正常通信,另外一个进行特殊处理。这样更加优雅!

    6410

    java网络编程 最全最精美 不好或者不详细你打我

    ),默认时间定为两个通信的最大时间之和,超出这个时间就默认服务器端已经接收到了自己的确认信息,此时客户端就关闭自身连接,服务器端一旦接收到客户端发来的确定通知就立刻关闭服务器端的连接。...void close(); 关闭套接字 客户端与服务器获取流的顺序必须是相反的: 例如: 客户端先得到了输入流 , 那服务器必须先获取输出流 UDP 协议(数据报) 程序 了解 用户数据报协议...使用到两个类: 1.数据报套接字: DatagramSocket 用于发送 与 接收数据包的Socket - 构造方法: - DatagramSocket(int port); - 参数: 端口号...- 常用方法: - close() : 关闭套接字...通过数据包DatagramPacket的getAddress方法, 可以得到数据包来自哪个ip 在TCP协议中, 通过套接字Socket的getInetAddress方法, 可以得到套接字连接的ip

    37320

    JAVA Socket详解

    该层向高层屏蔽了下层数据通信的细节,使高层用户看到的只是在两个传输实体间的一条主机到主机的、可由用户控制和设定的、可靠的数据通路。我们通常说的,TCP UDP就是在这一层。端口号既是这里的“端”。...发送方和接收方的成对的两个socket之间必须建立连接,当一个socket(通常都是server socket)等待建立连接时,另一个socket可以要求进行连接,一旦这两个socket连接起来,它们就可以进行双向数据传输...握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。...为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。...3、连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。

    39920

    C#网络编程(Socket编程)「建议收藏」

    ,可以用来实现不同虚拟机或不同计算机之间的通信 4.Socket的典型应用 (1)Socket的应用之一就是Web服务器和浏览器:浏览器获取用户输入的URL地址,向服务器发起请求,服务器分析接收到的URL...请求,将对应的网页内容返回给浏览器,浏览器再经过解析和渲染,将文字、图片、视频等元素呈现给用户 (2)QQ或者微信或者默默等聊天社交工具等:本地的QQ或微信程序就是客户端,登录过程就是连接服务器的过程...(二)网络模型 网络编程的本质是两个设备之间的数据交换,当然,在计算机网络中,设备主要指计算机。...(4)不需要连接连接,速度快 2.TCP: (1) 建立连接,形成传输数据的通道 (2)在连接中进行大数据量传输,以字节流的形式 (3)通过三次握手(四次挥手)完成连接,是可靠协议 (4)必须建立连接...处理客户端的连接请求 接通电话听、说沟通 终止连接 挂断电话 (四)客户端编写步骤 调用socket()函数创建一个用于通信的套接字 买了个手机 通过设置套接字地址结构,说明客户端与之通信的服务器的

    4.6K24

    pythonnet-网络编程(1)

    网络编程 目的:数据的传输 ISO(国际标准化组织) OSI七层模型----->网络通信的标准化流程 应用层:提供用户服务,具体的内容由特定的程序规定 表示层:提供数据的加密和压缩优化 会话层:确定建立应用链接...无重复 在数据传输前和传输结束后需要建立连接和断开连接 三次握手 : 在面向连接的传输服务中建立连接的过程 1....客户端向服务器发送连接请求 2. 服务器接受到请求进行确认,返回确认报文 3. 客户端收到服务器回复最终确认连接 四次挥手 : 在面向连接的传输服务站断开连接的过程 1....关闭套接字 sockfd.close() * telnet ip port 客户端 1. 创建套接字 (和服务端套接字类型相同) 2....发起连接 connect(addr) 功能 : 向服务端发起连接 参数 : 服务端地址 元组 3. 消息收发 4. 关闭套接字 下面看代码,此为客户端代码 ?  此为服务端代码: ?

    61130

    你知道 HTTP 是如何使用 TCP 连接的吗?今天我就来告诉你!

    HTTP GET报文; 浏览器从服务器读取 HTTP 相应报文; 浏览器关闭连接; ?...bind(s,) 向套接字赋一个本地端口号和接口 connect(s,) 创建一条连接本地套接字与远程主机及端口的连接 listen(s,...)...标识一个本地套接字,使其可以合法接受连接 s2 = accept(s) 等待某人建立一条到本地端口的连接 套接字 API 允许用户创建 TCP 的端点数据结构,将这些端点与远程服务器的 TCP 端点进...上图中说明了可以怎样通过套接字 API 来凸显客户端和服务器在实现 HTTP 事务时所应执行的步骤。 2、TCP 连接的握手 TCP 连接握手需要经过以下几个步骤。如图所示: ?...在事务处理结束之后仍然保持在打开状态的 TCP 连接被称为持久连接。非持久连接会在每个事务结束之后关闭。持久连接会在不同事务之间保持打开状态,直到客户端或服务器决定将其关闭为止。

    4.7K30

    网络编程socket之一

    ,其次是交换机还可以设定一个IP范围,从而使得广播的范围缩小   IP:IP分为两个,一个是电脑上由交换机分配的IP,这个IP在一个子网内是不可以重复的;另一个是公网IP,是路由器上的,这个是全球网络连接间的唯一标识...地址   DNS服务器:这是域名解析器,我们可以通过输入域名来查找对应的公网IP   网关:这相当于路由器上看门的,也就是 路由器上的公网IP,在公网上传输的数据,只有在目标IP和网关一致时,网关才会让数据进来...六、套接字socket   套接字起源于 20 世纪 70 年代加利福尼亚大学伯克利分校版本的 Unix,即人们所说的 BSD Unix。...因此,有时人们也把套接字称为“伯克利套接字”或“BSD 套接字”。一开始,套接字被设计用在同 一台主机上多个应用程序之间的通讯。这也被称进程间通讯,或 IPC。...套接字有两种(或者称为有两个种族),分别是基于文件型的和基于网络型的。 ? ? 七、基于tcp下的socket ? 在tcp下,基于连接的,需要先启动服务端,在启动客户端。

    70820
    领券