Socket和访问网站慢的问题

news/2024/5/20 4:15:25/文章来源:https://blog.csdn.net/weixin_56638151/article/details/121181856

目录

TCP/IP

socket

一、socket()套接字有哪些?

socket通信流程

四、如果你访问一个网站很慢,怎么排查和解决?


TCP/IP

要想理解socket首先得熟悉一下TCP/IP协议族, TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,定义了主机如何连入因特网及数据如何在它们之间传输的标准。

从字面意思来看TCP/IP是TCP和IP协议的合称,但实际上TCP/IP协议是指因特网整个TCP/IP协议族。不同于ISO模型的七个分层,TCP/IP协议参考模型把所有的TCP/IP系列协议归类到四个抽象层中

应用层:TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等

传输层:TCP,UDP

网络层:IP,ICMP,OSPF,EIGRP,IGMP

数据链路层:SLIP,CSLIP,PPP,MTU

每一抽象层建立在低一层提供的服务上,并且为高一层提供服务。



socket

我们知道两个进程如果需要进行通讯最基本的一个前提能够唯一的标示一个进程,在本地进程通讯中我们可以使用PID来唯一标示一个进程,但PID只在本地唯一,网络中的两个进程PID冲突几率很大,这时候我们需要另辟它径了,我们知道IP层的ip地址可以唯一标示主机,而TCP层协议和端口号可以唯一标示主机的一个进程,这样我们可以利用ip地址+协议+端口号唯一标示网络中的一个进程。
能够唯一标示网络中的进程后,它们就可以利用socket进行通信了,什么是socket呢?我们经常把socket翻译为套接字,socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。
在这里插入图片描述
socket起源于UNIX,在Unix一切皆文件哲学的思想下,socket是一种"打开—读/写—关闭"模式的实现,服务器和客户端各自维护一个"文件",在建立连接打开后,可以向自己文件写入内容供对方读取或者读取对方内容,通讯结束时关闭文件。

一、socket()套接字有哪些?

套接字(socket)是网络中不同主机上的应用进程进行双向通信的端口的抽象,网络进程通信的一端就是一个套接字,不同主机上的进程就是通过套接字发送数据报来进行通信的,如TCP协议使用主机的IP地址+端口号来作为TCP连接的端点,这个端点就是套接字。

套接字主要有以下三种类型:

  • 流套接字(SOCK_STREAM): 流套接字基于TCP传输协议, 主要用于面向连接的、可靠的数据传输服务,由于TCP协议的特点,使用流套接字进行通信时能够保证数据无差错、无重复传送、并按顺序接收,通信双方不需要在程序中进行相应的处理。

  • 数据报套接字(SOCK_DGRAM): 因为UDP协议传输的是数据报,所以数据报套接字是基于UDP传输协议的,对应于无连接的UDP服务应用,该服务并不能保证数据传输的可靠性, 也无法保证数据按照顺序到达, 同时通信两端不需要建立长时间的连接,UDP客户端发送一个数据给服务器后,就可以使用同一个套接字给另一个服务器发送数据, 当使用UDP套接字时,丢包等问题需要在程序中进行处理。

  • 原始套接字(SOCK_RAW): 由于流套接字和数据报套接字只能抓取TCP和UDP协议的数据,当需要处理非传输层数据包或操作系统无法处理的数据包时,就需要使用原始套接字来发送。



socket通信流程

在这里插入图片描述
简单描述一下Socket的通信流程:

  • 服务端这边首先创建一个Socket(Socket()),然后绑定IP地址和端口号(Bind()),之后注册监听(Listen()),这样服务端就可以监听客户端的连接请求了;
  • 客户端这边也创建一个Socket(Socket())并打开,然后根据服务器IP地址和端口号向服务器Socket发送连接请求(Connect());
  • 服务器Socket监听到客户端Socket发来的连接请求之后,被动打开,并调用Accept()函数接收请求(开始接收客户端请求,直到客户端返回连接信息。这时候socket进入阻塞状态,所谓阻塞即accept()方法一直到客户端返回连接信息后才返回,开始接收下一个客户端连接请求);
  • 客户端连接成功,向服务器发送连接状态信息;
  • 服务器accept方法返回,连接成功;
  • 成功建立连接之后就可以互相传送数据了,客户端和服务器进行数据交互(Receive()、Send());
  • 在数据传送完成之后,各自关闭连接(Close()),交互结束;

服务器socket与客户端socket建立连接的部分其实就是大名鼎鼎的三次握手
在这里插入图片描述

四、如果你访问一个网站很慢,怎么排查和解决?

网站打开慢的原因有很多,总结一下最常见的几个。

  • 查看本地网络是否正常,查看网络带宽是否被占用,如有其他进程正在占用本地网络带宽。

  • 若网络连接正常,那么就应该对该网站的服务器速度进行排查,通过ping命令查看连接到服务器的时间和丢包情况,如果服务器正常,那么丢包率一般不会超过1%, 其次是ping值要小,最后是ping值要稳定,如果ping值的最大和最小差值过大说明路由不稳定。 或者我们查看打开同台服务器上的其他网站的速度,看打开其他网站的速度是否也慢。

  • 如果网站打开速度时快时慢,甚至有时候打不开的情况,那么有可能是空间不稳定,如果确定了是该问题,那么就应该找你的空间商更换空间了,可以选择购买双线或多线空间。

  • 从网站本身寻找原因,网站的问题主要包括网站程序设计、网页结构设计和网页内容三部分。

1、网站程序设计: 当访问网页中有拖慢网站打开速度的代码,会直接影响网站的打开速度,如网页中使用的统计代码,一般是要放置在网站末尾的,防止其在加载过程中出现延迟。

2、网页结构设计: 查看网页布局的代码,如果网页使用的table布局的网页,查看是否被嵌套次数过多,或者是使用一个大表格分成多个小表格的布局,这个时候可以使用div配合css来改进。

3、网页内容: 查看网页中是否有许多大尺寸的图片和大尺寸的flash存在,我们可以通过降低图片质量,减少图片尺寸,少用过多的flash来解决。或者可能是由的网站引用了其他网站的内容, 若某些被引用的网站访问速度慢或者不存在,该网站的打开速度自然会变慢,所以可以直接减少不必要的加载项。

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【一周安全热点】湖北首例入侵物联网案致十万台设备掉线|俄罗斯多个政府网站共泄露225万公民信息...

湖北首例入侵物联网案致十万台设备掉线,暴露企业重业务轻安全 近日,湖北省破获首例入侵物联网计算机信息系统刑事案件。经统计,受害公司因超百台设备被恶意升级、10万台设备“被”离线而无法使用。 互联网发展早期,企业往往对安全…

在.net core上,Web网站调用微信支付-统一下单接口(xml传参)一直返回错误:mch_id参数格式错误...

这是 微信支付-统一下单 接口文档 一、问题描述 在调用统一下单接口时,报mch_id参数格式错误,但商户ID确实是10位数字正确的,可就是一直报这个错误 返回的错误xml如下: 二、排错过程 1、多次对比官网xml格式,确认生成…

连接打印机提示:找不到驱动程序,windows在网络上找不到Canon LBP2900的驱动程序,若要手动查找,请单击“确定”。否则,请单击“取消”并咨询你的网络管理员或者访问打印机制造商的网站

本机系统:windows server 2012 Datacenter Evaluation Build 9200 bit64 打印机USB连接的系统: windows XP SP3 bit32 解决: 问题在于本机系统与对方系统不一样,无法复制给你对应的驱动(一个是win2012,一个是xp ; 一个是64位,一个是32位) 那么就只能在网上下载本机系统的对应驱…

一文读懂网站SEO优化国际版

前言 SEO即Search Engine Optimization搜索引擎优化,目的是通过提升网站在搜索引擎的排名来提升网站的自然流量。简而言之,SEO的工作原理是向搜索引擎证明您的内容是当前主题的最佳结果。SEO技术涉及关键字研究、内容创建、链接构建和技术审核等内容。 G…

apache网站服务器

apache简介 Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通…

freebsd+Heartbeat2+php+postgres实现数据库复制和高可用网站

用2节点实现。采用heartbeat老版本2.x , 采用自己编写的resource agent,没有采用OCF 1 安装freebsd——废话 2 安装apache php (略) postgres,并设置复制,见: http://blog.csdn.net/zeeeitch/ar…

python爬取网站图像文件(网络爬虫)

一、代码 from bs4 import BeautifulSoup from bs4 import UnicodeDammit import urllib.request import threading def imageSpider(start_url):global threadsglobal counttry:urls[]requrllib.request.Request(start_url,headersheaders)dataurllib.request.urlopen(req)da…

html5 交互性网站,HTML5和CSS3的新交互性盘点:炫酷体验

【IT168 技术】本文标题的这副图片,是用Phosotshop制作的。但是,在搜索引擎中你却无法搜索到它,搜索引擎还没有强大到能够识别图片里面的文字。并且由于图片的体积不算太小,可能网速慢的网友在浏览的时候不得不耐心的等待图片的刷…

百度云cdn设置州五年制大专_使用CDN提升网站速度

CDN是什么鬼,下面我们就来介绍一下,CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块&#x…

谷歌翻译影响vue_给自己的网站接入谷歌翻译,以及修复了一个谷歌翻译的一个bug...

给网站加谷歌翻译,搜索引擎一搜一大堆,这里不再赘述。只贴一个申请谷歌翻译的一个地址:https://translate.google.com/...和一段代码:下面是官方给出的代码:下面是我改良的代码:function googleTranslateEl…

mysql迅_soxuncms 搜迅电影系统php版是一套采用PHP+MySQL环境搭建的智能建站 ,拥有海量 片信息, Web Server 266万源代码下载- www.pudn.com...

文件名称: soxuncms下载 收藏√ [5 4 3 2 1 ]开发工具: PHP文件大小: 3820 KB上传时间: 2016-10-30下载次数: 0提 供 者: npg详细说明:搜迅电影系统php版是一套采用PHPMySQL环境搭建的智能建站系统,拥有海量的影片信息,本站坚持每月都有…

nginx服务器带宽_如何利用nginx搭建一个简单的文件下载网站?

12月21日 因为时间关系写的并不是特别详细,后续会补充前期准备1、首先你需要有一台云服务器腾讯云服务器购买【腾讯云】云产品限时秒杀,爆款1核2G云服务器,首年99元其实我个人比较推广下面这款(性价比高):【…

软件测试:测试一个网站

一、软件测试的原则 1、软件测试应尽早执行,并贯穿于整个软件生命周期 2、软件测试应追溯需求 3、测试应由第三方来构造 4、穷举测试是不可能的,要遵循 Good-enough 原则 5、必须确定预期输出(或结果) 6、必须彻底检查每个测试结果 7、充分注…

网站服务器放置地怎么填,域名备案服务器放置地怎么填

域名备案服务器放置地怎么填 内容精选换一换通过华为云备案,需要先购买华为云中国大陆节点服务器,用于网站备案使用,后称为“备案服务器”。目前可用于华为云备案的服务器,请参见备案服务器。如果您的华为云帐号A中没有可备案的服…

使用Apache服务部署静态网站

10.1 网站服务程序 1970年,作为互联网前身的ARPANET(阿帕网)已初具雏形,并开始向非军用部门开放,许多大学和商业部门开始接入。虽然彼时阿帕网的规模(只有4台主机联网运行)还不如现在的局域网成…

记一次企业邮官网SEO优化

背景: 百度搜索 网易企业邮箱 会出现m.qiye.163.com 排名在前的问题 解决办法 在pc和m站分别加入 、mobile applicable-device标注可以帮助百度识别网站是PC站还是M站,给百度提交提交校验识别结果的正确性,减少百度蜘蛛把PC站当成M站&…

nginx配合前端实现网站分流 ABtest

前端随机生成0-99的cookie,通过nginx分配10%的流量 nginx配置 前端生成cookie (function(){function random(min, max) {return Math.floor(Math.random() * (max - min)) min;}function setCookie(name, value, days) { // 设置cookie days设置过期时间 单位:天…

懂点网站交互(1):网站设计准则

别让我思考 这是网站交互设计中最最最重要的原则——它是设计中判别什么有用,什么没用的终极法则。 这意味着,当读者看到一个页面时,它应该是不言而喻、一目了然、自我解释的。 即读者能“明白它”——知道它是什么意思,怎样用…

spring boot和spring cloud 开发必备工具准备 和 必备网站导航

spring boot和spring cloud 开发必备工具准备 和 必备网站导航 本文主要介绍spring cloud开发前期准备,为以后学习和开发有一些资料保障: 常用网站: spring boot 官网英文网站,有一些简单和详细的介绍 http://projects.spring.…

懂点网站交互(3):广告牌设计101法则

在上篇文章 懂点网站交互(2):我们实际上是如何使用web的 我们可以了解到实际上用户浏览网站时并不会按我们假定的方式,而是飞快的扫视而过,那么我们如何让用户了解我们的网站呢? 1.尽量利用习惯用法 2.建立…