客户端:首先创建socket套接字,然后调用connect()建立连接。进行TCP三次握手后,使用write()写数据,read()读取数据,最后close()关闭连接。
服务端:服务端首先创建套接字socket(),然后bind()绑定相应的地址和端口号,并置于监听状态。然后调用accept(),阻塞等待客户端发起连接。建立连接后,使用write()写数据,read()读数据,最后close()关闭连接。

TCP三次握手过程:
服务器调用socket()、bind()、listen()完成初始化后,调用accept()阻塞等待;客户端Socket对象调用connect()向服务器发送了一个SYN并阻塞;服务器完成了第一次握手,即发送SYN和ACK应答;客户端收到服务端发送的应答之后,从connect()返回,再发送一个ACK给服务器;服务器Socket对象接收客户端第三次握手ACK确认,此时服务端从accept()返回,建立连接。

int socket(int domain, int type, int protocol);
int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
int listen(int sockfd, int backlog);
int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
ssize_t read(int fd, void *buf, size_t count);
ssize_t write(int fd, const void *buf, size_t count);
int close(int fd);

常用的socket类型有,SOCK_STREAM(TCP)、SOCK_DGRAM、SOCK_RAW、SOCK_PACKET、SOCK_SEQPACKET等等(socket的类型有哪些?)。

TCP四次挥手过程:
某个应用进程调用close()主动关闭,发送一个FIN;另一端接收到FIN后被动执行关闭,并发送ACK确认;之后被动执行关闭的应用进程调用close()关闭Socket,并也发送一个FIN;接收到这个FIN的一端向另一端ACK确认。

2021-11-4 socket的通信过程相关推荐

  1. Socket 系统调用深入研究(TCP协议的整个通信过程)

    说明 本文主要参考的原文:Know your TCP system call sequences socket api可以参考我的博客:socket API 介绍 TCP DEMO:tcp demo ...

  2. stm32c8t6的can通信实验代码_TCP的连接建立与关闭状态及数据传输通信过程【含有 PHP socket API 测试实验代码】...

    php中文网最新课程 每日17点准时技术干货分享 本文章使用 PHP 代码来测试 TCP 传输层的一个通信过程.TCP/IP 协议关于该协议的详细内容可自行查阅 <>PHP 的 tcp/u ...

  3. Socket编程(C语言实现)—— AF_INET(典型的TCP/IP四层模型的通信过程),AF_UNIX(本地进程间通信)

    1.AF_INET域与Socket通信 其是典型的TCP/IP四层模型的通信过程. (1)接收方与发送方依赖IP和port来标识,即,将本地socket绑定到对应的IP端口上: (2)发送数据时指定对 ...

  4. asp.core api 通过socket和服务器通信发送udp_【网络通信】TCP的通信过程

    本文主要介绍以下几个内容: 1.TCP.UDP.Socket分别是什么?有什么区别? 2.TCP的基本过程. 3.TCP三次握手建立连接. 4.TCP四次挥手断开连接. 5.常考查其他问题. 1.TC ...

  5. 一文入门网络编程:常见协议、通信过程、Socket、CS/BS、TCP/UDP

    网络编程三要素:ip地址.端口.协议,在网络通信协议下,不同计算机上运行的程序,可以进行数据传输 常见协议: 传输层 常见协议有TCP/UDP协议. 应用层 常见的协议有HTTP协议,FTP协议. 网 ...

  6. socket bufferedinputstream通信读取不到服务器返回的响应_TCP角度看socket通信过程,socket怎么表示三次握手,四次挥手...

    什么是套接字? socket 的中文翻译过来就是"套接字".套接字是什么,它的英文含义:插座. Socket 就像一个电话插座,负责连通两端的电话,进行点对点通信,让电话可以进行通 ...

  7. java socket分包粘包 代码_分享java中处理socket通信过程中粘包情况的实例代码

    本篇文章主要介绍了java中处理socket通信过程中粘包的情况,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 这两天学习了java中处理socket通信过程中粘包的情况,而且很重要,所以,今天添 ...

  8. nodejs python 通信_Nodejs环境实现socket通信过程解析

    结构: socket是应用层和传输层的桥梁.(传输层之上的协议所涉及的数据都是在本机处理的,并没进入网络中) 涉及数据: socket所涉及的数据是报文,是明文. 作用: 建立长久链接,供网络上的两个 ...

  9. 【网络通信与信息安全】之深入解析两台主机之间的通信过程和原理

    一.前言 本文通过在 Docker 容器中执行命令,来深入了解两台主机之间的通信过程.阅读完本文,您将熟悉以下内容: Docker 的基本操作: 创建 socket 并发送 HTTP 请求: 路由表. ...

最新文章

  1. 股票交易应用系统的性能分析工具介绍(一)
  2. 使用ExecutorService来停止线程服务
  3. 【Pytorch神经网络理论篇】 26 基于空间域的图卷积GCNs(ConvGNNs):定点域+谱域+图卷积的操作步骤
  4. 数据表的新建 修改 删除 mysql
  5. Hashmap扩容时出现循环链表(jdk1.8把头插法换成了尾插法的原因)
  6. Tomcat新版本旧版本下载(Windows和Linux)
  7. Unity 2D工具:工作流介绍
  8. dist包编译html_npm package开发指南-包内容篇
  9. MySql的完整卸载(总共四个步骤)
  10. xpdf 打开 chinapub中文pdf
  11. GPU架构(Fermi Kepler)
  12. 画出psnr_计算图像的峰值信噪比PSNR以及均方根误差MSE
  13. 计算机基础及wps office应用_中职2020《计算机应用基础》期末考试试卷
  14. 古剑奇谭3steam服务器稳定吗,国产游戏《古剑奇谭3》占据steam热销榜第一?这么好玩吗?...
  15. 【热点】印度年轻人跟中国年轻人有什么不同
  16. Python编程基础 第五章 编程练习 编写程序实现以下功能:根据指定值从一个列表中查找所有匹配元素的位置,要求使用列表中的index方法进行查找。
  17. 扫地机器人作文说明文提纲_扫地机器人的作文
  18. 获取非行内样式的兼容
  19. 华为发布新一代CloudLink视讯解决方案
  20. cgb2007-京淘day07

热门文章

  1. C++程序设计语言学习笔记:名字空间
  2. 【Rosalind】Rabbits and Recurrence Relations
  3. Android Canvas 缩放(Scale)
  4. mt6582 pwm
  5. StarRocks 运维工具 StarGo
  6. 为你的程序创建一个控制台
  7. linux gitlab安装教程,linux安装gitlab(官方)
  8. S5PV210 裸机开发驱动之LED灯
  9. 专题7:动态规划 记忆化搜索
  10. 在阿里云CentOS7上搭建ftp服务器