《计算机网络——自顶向下方法》精炼——2.7.2(TCP套接字编程)

news2024/9/29 9:38:09

“学习的敌人是自己的满足。” —— 叶圣陶

文章目录

  • TCP套接字编程
    • TCP套接字编程概述
    • 客户进程
    • 服务器进程

TCP套接字编程

TCP套接字编程概述

TCP是一个面向连接的运输层协议,因此可以分为发起连接的阶段和传输阶段。
在这里插入图片描述

  1. 发起连接时,客户进程创建一个客户套接字并与“欢迎套接字”进行“三次握手”。
  • 欢迎套接字是服务器进程一直运行的一个套接字,它接收来自所有客户进程的发起TCP连接请求(“三次握手”),并在这个过程中为每个客户创建一个新的专属于它的连接套接字进行信息传输。
  • 三次握手是TCP协议中的客户进程和服务器进程在创建一个TCP连接时为了确认一些基本信息所进行的信息传输。具体过程在传输层时会讲到。
  • 注意,欢迎套接字对所有客户共享,在欢迎之后服务器才会创建对于某个客户的连接套接字。举个例子:
    在这里插入图片描述
    在这张图中,A和B是两个不同的客户进程。可以看到它们向相同的欢迎套接字发起三次握手,用专属于它们自己的连接套接字进行传输。
  1. 在传输阶段,客户向服务器发送请求并接收来自服务器的响应报文。

客户进程

客户进程的代码如下:
在这里插入图片描述
我们观察这段代码中与UDP不同的部分。

  1. 第四行创建了客户套接字,与UDP相比,它的第二个参数指示生成一个TCP套接字而非UDP。
  2. 由于TCP是面向连接的运输层协议,因此第五行表示将连接请求发给“欢迎套接字”以生成一个TCP连接。
  3. 由于已经与连接套接字生成了连接,所以在第七行传输信息时不用指定服务器端套接字的位置。
  4. 第八行中也因为同样原因无需传输地址信息。

服务器进程

服务器进程代码如下:
在这里插入图片描述
依然讨论这段代码中特别的部分:

  1. 注意,这段代码创建了欢迎套接字和连接套接字,最后关闭了连接套接字,保持欢迎套接字开启。
  2. 第五行表示让serverSocket(欢迎套接字)调用listen函数,聆听客户的连接请求,函数的参数是同时请求连接的最大数。
  3. 循环内的第一行调用accept函数,它接受了客户的连接请求,创建了一个连接套接字connectionSocket。
    请添加图片描述
    我是霜_哀,在算法之路上努力前行的一位萌新,感谢你的阅读!如果觉得好的话,可以关注一下,我会在将来带来更多更全面的知识讲解!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/486164.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【LeetCode】221.最大正方形

221.最大正方形(中等) 题解 对于在矩阵内搜索正方形或长方形的题型,一种常见的做法是:定义一个二维 dp 数组,其中 dp[i][j] 表示满足题目条件的、以(i,j)为右下角的正方形或长方形属性。在本题中…

【备战蓝桥杯国赛-国赛真题】费用报销

题目链接:https://www.dotcpp.com/oj/problem2696.html 思路 读完题,再看一眼数据范围,这道题的做法也就确定了——DP。 DP的题目往往很容易辨识出来,所以我们就往DP上想了,第一要素是选出的所有票据里面&#xff0c…

【LeetCode】64. 最小路径和

64. 最小路径和(中等) 方法一:常规动态规划 思路 定义一个二维 dp 数组,其中 dp[i][j]表示从左上角开始到(i, j)位置的最优路径的数字和。因为每次都只能向下或者向右移动,所以很容易发现 dp数组…

汽车行业V模型开发详解

在新能源汽车开发过程中,通常会采用V模型(V-Model)进行系统开发。V模型是一种基于需求分析、体系架构设计、硬件和软件开发、集成测试以及产品验证的系统工程方法。 下面简要介绍新能源汽车V模型开发的主要阶段: V模型开发&…

encrypted勒索病毒攻击nas服务器,服务器中了勒索病毒解密数据恢复

近年来,勒索病毒的攻击技术不断升级,各种加密型的病毒不断出现,给我们工作和生活带来了很大困扰。其中,encrypted勒索病毒攻击NAS网络存储设备已经变得越来越常见。而这次我们将为大家探讨如何预防encrypted勒索病毒攻击NAS服务器…

springboot+vue教师人事档案管理系统(源码+文档)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的教师人事档案管理系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 💕💕作者&#xff1…

架构集群部署

这是一个简单的集群框架 192.168.142.10做负载均衡(主) 192.168.142.20(副) 先做keepalive 两台nginx做七层反向代理(动静分离) 192.168.142.30 192.168.142.40 部署tomcat做多实例部署 192.168.14…

linux驱动开发 - 11_Linux 下的驱动分离与分层

文章目录 11. Linux 下的驱动分离与分层1 驱动的分隔与分离2 驱动的分层 11. Linux 下的驱动分离与分层 1 驱动的分隔与分离 linux是一个成熟、复杂、庞大的操作系统,代码的重用性很重要,不然会在linux内核存在大量的无意义重复的代码。尤其的驱动程序…

进阶Spring(2)-BeanFactory和ApplicationContext实现

🏠个人主页:阿杰的博客 💪个人简介:大家好,我是阿杰,一个正在努力让自己变得更好的男人👨 目前状况🎉:24届毕业生,奋斗在找实习的路上🌟 &#x1…

[Data structure]单链表常见算法题

⭐作者介绍:大二本科网络工程专业在读,持续学习Java,努力输出优质文章 ⭐作者主页:逐梦苍穹 ⭐所属专栏:数据结构。数据结构专栏主要是在讲解原理的基础上拿Java实现 ⭐如果觉得文章写的不错,欢迎点个关注一…

Hibernate(二)——Springboot整合Hibernate

在了解了Hibernate后&#xff0c;进一步将Hibernate和Springboot整合。 目录 引入依赖配置文件代码BeanDao层Service层Controller层 测试JpaRepository接口 引入依赖 <!--引入hibernate--> <dependency><groupId>org.springframework.boot</groupId>…

【大数据处理与可视化】四、数据预处理

【大数据处理与可视化】四、数据预处理 实验目的实验内容实验步骤一、案例——预处理部分地区信息1、导包2、读取文件3、检查并删除重复数据北京天津&#xff08;无重复数据&#xff09; 4、检查缺失值北京&#xff08;无缺失值&#xff09;天津&#xff08;向前填充&#xff0…

10分钟学会搭建sovits第一篇

So-vits-svc 基于端到端架构的VITS和soft-vc&#xff0c;用户只需准备几十分钟到几个小时不等的语音或歌声数据&#xff0c;就能制作&#xff08;训练&#xff09;属于自己的 AI 声库 &#xff08;前提是你的显卡足够给力&#xff09;&#xff0c;将一段语音或歌声转换为你想要…

简易时钟-QT学习

1 .h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPaintEvent> //绘制事件 #include <QPainter> //画家类 #include <QPaintDevice> #include <cmath> // #include <QPainterPath> #include <QTime> //时间类…

基于蜣螂算法的无人机航迹规划-附代码

基于蜣螂算法的无人机航迹规划 文章目录 基于蜣螂算法的无人机航迹规划1.蜣螂搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用蜣螂算法来优化无人机航迹规划。 1.蜣螂搜索算法 …

【LeetCode】646. 最长数对链

646. 最长数对链&#xff08;中等&#xff09; 思路 这道题和 300. 最长递增子序列 类似&#xff0c;我们可以定义 dp 数组&#xff0c;其中 dp[i] 表示以 i 结尾的子序列的性质。在处理好每个位置后&#xff0c;统计一遍各个位置的结果即可得到题目要求的结果。 但是题目中强…

ElasticSearch(二)简介

1. 简介 Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。 它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性&#xff0c;能使数据在生产环境变得更有价值。 Elasticsearch 的实现原理主要分为以下几个步骤&#xf…

Servlet执行原理和API详解

一、HttpServlet 我们写 Servlet 代码的时候, 首先第⼀步就是先创建类, 继承⾃ HttpServlet, 并重写其中的某些方法. 1.1核心方法 1.2处理GET或POST请求 1.3数据的两种提交方式 数据提交有两种方式&#xff1a; form 表单提交ajax 提交 1.3.1form 表单提交 form表单提交的…

瑞萨e2studio(24)----电容触摸配置(1)

瑞萨e2studio.20--电容触摸配置1 概述硬件准备新建工程工程模板保存工程路径芯片配置工程模板选择时钟配置添加TOUCH驱动配置CapTouch开启调优界面启动 CapTouch 调优通过电容触摸点亮LED 概述 这篇文档将创建一个使用 e2 studio 集成 QE 的电容式触摸应用示例&#xff0c;通…

C语言函数大全-- s 开头的函数(3)

C语言函数大全 本篇介绍C语言函数大全-- s 开头的函数&#xff08;3&#xff09; 1. sleep 1.1 函数说明 函数声明函数功能unsigned int sleep(unsigned int seconds);它是 C 语言标准库中的函数&#xff0c;用于使当前进程挂起一定的时间。在挂起期间&#xff0c;操作系统…