96SEO 2026-02-23 13:52 25
有很大的帮助但是由于本节涉及到了大量的编程知识对于一些朋友来说不是很好理解所以大家看本节的时候强烈建议结合我的这篇笔记来学习本篇整理了许多详细的案例和解析也补充了我自己的理解导致这篇笔记来到了七千多字工程量很大如果这篇文章对你有所帮助别忘了留下你的点赞和关注

该视频是B站非常著名的计网学习视频但相信很多朋友和我一样在听完前面的部分发现信息量过大有太多无法理解的地方在我第一次点开的时候也有相同的感受但经过了一段时间项目的学习对计网有了更多的了解所以我准备在这次学习的时候做一些记录并且加入一些我的理解希望能够帮助到大家。
并不会消失它继续存在并可以接收更多的客户端连接请求。
服务器端的监听
上述过程中的端口中服务器的端口是指定的就是对外提供服务的端口每个服务器都有对外提供访问服务的端口而客户端的端口可能是随机指定的比如编写一段
端口程序向数据库服务器发送请求作为客户端数据库服务器提供的访问端口为
3306返回的数据不会直接发送到Java程序监听的8080端口而是发回到客户端在连接时使用的随机源端口上。
这个例子是为了让大家更好的理解服务器的客户端因为在命令执行的时候服务器其实就是发送请求的客户端而
客户端接收一个仅包含小写字母的输入将输入部分发送给服务器服务器将其转换为大写并且返回
地址族地址族用来定义不同类型的网络层协议以及这些协议如何识别并处理网络地址。
每一种地址族对应一种特定的网络协议或一系列相关的协议支持相应的地址格式和相关功能
等是将其对应的结构转换为一个通用的结构来进行信息的传递的所以能够将其转换为这个统一的结构且不会出现匹配问题就需要一个填充字段来使得更具备兼容性。
一方当客户端或服务器需要指定一个网络地址进行连接、绑定或接收连接时就会使用
结构体这个端点既可以是本地端例如服务器绑定到的IP地址和端口也可以是远程端例如客户端要连接的目标服务器的IP地址和端口。
hostent在C语言的网络编程中用于存储与主机名解析相关的信息它包含了从域名系统DNS获取到的一个特定主机的所有相关信息。
地址类型例如AF_INETIPv4、AF_INET6IPv6int
buffer[BUFFER_SIZE];这里先不对每个变量的意义做出解释后面在流程中一一阐述
返回的就是这个标识。
上述的创建过程包括很多后续的创建过程都是通过
sizeof(server_addr));server_addr.sin_family
假设监听8000端口server_addr.sin_addr.s_addr
failed);exit(EXIT_FAILURE);}这一步就是将创建的
都是一个系统返回的整型在本步骤之后它就与本地的端口做了绑定上面的
failed);exit(EXIT_FAILURE);}创建完上面的
并且将请求放于队列中等待这个队列最多存储十个请求当请求多于十个的时候会拒绝请求。
通过这个命令将
与服务器不同的是服务器需要额外的去指定自己的端口不能随便分配因为这个端口是要告知客户端来使其访问的所以对于客户端的
为该socket分配一个可用的临时端口作为源端口这个端口号通常是随机选择的范围是1024至65535。
sizeof(server_addr));server_addr.sin_family
supported);exit(EXIT_FAILURE);}服务器的信息是提前告知用户的
failed);exit(EXIT_FAILURE);}当建立连接后客户端就可以发送信息了
failed);close(client_sock);continue;}buffer[bytes_received]
关闭已处理的客户端连接close(client_sock);上述的代码是写在
关闭客户端socketclose(client_sock);2.8.3
socket()函数用于创建一个新的socket参数指定了地址族AF_INET表示IPv4、套接字类型SOCK_STREAM表示TCP流式套接字和协议通常为0由系统选择合适的协议
socket当这些信息都不指定的时候返回的就是一个普通的整型没有任何绑定这个绑定可以通过后续的
一定是绑定了客户端和服务器的全部信息的所以后续的一部分操作就是针对这个
bind()绑定一个本地IP地址和端口到服务器socket。
server_addr是一个初始化好的sockaddr_in结构体包含了服务器要监听的IP地址和端口号信息。
listen()将服务器socket设置为监听模式并允许指定数量在例子中是10个的未完成连接请求排队等待。
accept()该函数使服务器socket进入阻塞状态直到有新的客户端连接请求到达。
成功建立连接后返回一个新的socket描述符client_sock用来与新客户端通信并通过client_addr获取客户端的地址信息。
recv()recv()用于从已连接的socket接收数据而send()则用于向已连接的socket发送数据。
close()关闭已打开的socket文件描述符释放系统资源。
这就引出了另一种理解方式在真正的业务开始之前所有的操作都是为了使得通信双方获得
Protocol建立连接的过程确保了客户端和服务器之间的数据传输通道可靠、有序且无差错。
第一次握手
Numbers报文段到服务器其中包含客户端选择的一个初始序号seqx。
此时客户端进入SYN_SENT状态。
服务器接收到客户端的SYN报文段后如果同意建立连接则回应一个SYNACK同步并确认报文段。
这个报文段中包含了服务器的初始序号seqy并将确认号ack设置为x1表示已接收并期望接下来的数据从x1开始。
服务器进入SYN_RECEIVED状态。
客户端收到服务器的SYNACK报文段后向服务器发送一个ACK确认报文段。
该报文中确认号ack设置为y1表示已经接收到了服务器的SYN并且期望接下来的数据从y1开始。
客户端同时也将自己的序号seq更新为x1。
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback