Socket解惑

不少开发人员对Socket的概念不是很熟悉,这篇文章可带你快速了解socket(高手略过)。

Socket又称"套接字”,网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。

建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口。

我们做应用程序开发的,使用模式通常为客户端与服务端通信,发出请求获得应答,这也与我们常使用的http类似,但相比之下:HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。

对于Socket,实现网络通信还需要这些要素: *IP地址: (网络上主机设备的唯一标识) *端口号: (定位程序,有效端口:0-65535,其中0-1024由系统使用或者保留端口,开发中建议使用1024以上的端口) *传输协议: (常见TCP、UDP)

TCP和UDP

TCP(传输控制协议)

建立连接,形成传输数据的通道 在连接中进行大数据传输(数据大小不收限制) 通过三次握手完成连接,是可靠协议,安全送达 必须建立连接,效率会稍低

UDP(用户数据报协议)

将数据及源和目的封装成数据包中,不需要建立连接 每个数据报的大小限制在64K之内 因为无需连接,因此是不可靠协议 不需要建立连接,速度快

对于使用TCP/IP的Socket,不得不提到它的三次握手:
1.客户端向服务器发送一个SYN J
2.服务器向客户端响应一个SYN K,并对SYN J进行确认ACK J+1
3.客户端再想服务器发一个确认ACK K+1

完成了三次握手,客户端与服务端就可以传送数据了。

百度说的可能更好理解.png

整个Socket的通信流程如下:

流程图.png

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏JetpropelledSnake

Python Web学习笔记之TCP、UDP、ICMP、IGMP的解释和区别

TCP与UDP解释 TCP---传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输...

373120
来自专栏SDNLAB

【技术专栏】SDN交换机功能测试工具OFTest安装与使用总结

【概要】SDN功能测试工具通过发送协议数据包并根据被测试对象的反馈来判断其功能的完整性,比较典型的工具是OFTest,它模拟控制器向交换机发送OpenFlow协...

44980
来自专栏Laoqi's Linux运维专列

apache的keepalive和keepalivetimeout

64440
来自专栏北京马哥教育

tcp_tw_reuse、tcp_tw_recycle 使用场景及注意事项

linux TIME_WAIT 相关参数: net.ipv4.tcp_tw_reuse = 0 表示开启重用。允许将TIME-WAIT sockets重...

914110
来自专栏JetpropelledSnake

Python Web学习笔记之TCP/IP、Http、Socket的区别

经常在笔试、面试或者工作的时候听到这些协议,虽然以前没怎么涉及过,但至少知道这些是和网络编程密不可分的知识,作为一个客户端开发程序员,如果可以懂得网络编程的话,...

515150
来自专栏从流域到海域

在浏览器地址栏输入百度网址之后的故事(面试必考)

面试的时候,面试官经常会问这样的问题,我在浏览器地址栏输入”www.baidu.com”,之后发生了哪些事情呢,这个问题其实是想问你与网页访问有关的网络协议,下...

24350
来自专栏移动开发面面观

计算机网络学习笔记(一)

当一个客户寻求服务时,他首先要找到服务的地址。有了这个地址,它就能找到对应的服务器。这就是IP地址,它也唯一标识了主机。

17020
来自专栏FreeBuf

MOTS攻击技术分析

背景 我们经常遇到这样一个场景:在用户现场通过端口镜像方式对流量做镜像,用来分析数据包或者审计的时候,疑心较大的用户总是怀疑其数据会被篡改或客户端信任的结果并非...

28080
来自专栏Linyb极客之路

网络编程之TCP新手误区--心跳的意义

最近面试了很多的学生,发现很多TCP的新手对于TCP的使用有一些误区,而这些坑也是当初我曾经疑惑过得地方。网上很少有文章对这些问题有过详细的解析,即是有也只是直...

19320
来自专栏北京马哥教育

什么是SYN Flood攻击?

SYN Flood (SYN洪水) 是种典型的DoS (Denial of Service,拒绝服务) 攻击。效果就是服务器TCP连接资源耗尽,停止响应正常的T...

56690

扫码关注云+社区

领取腾讯云代金券