web与网络编程

C#网络编程:构建Web爬虫与网络应用 C# 为开发 Web 爬虫和网络应用提供了强大的支持。在 Web 爬虫方面,你可以利用。 阅读详情

使用HTTP协议访问Web

通过发送请求获取服务器资源的Web浏览器等,被成为客户端(client)。
在这里插入图片描述

Web使用一种名为HTTP(超文本传输协议)的协议作为规范,完成从客户端到服务器端等一系列运作流程。

可以说,Web时建立在HTTP协议上通信的。

网络基础TCP/IP

通常使用的网络(包括互联网)都是在TCP/IP协议族的基础上运作的。
而HTTP属于它内部的一个子集。

TCP/IP协议族

不同硬件、操作系统之间的通信,所有的一切都需要一种规则,我们把这种规则成为协议。

TCP/IP的分层管理

TCP/IP协议族按层次分别分为一下4层:应用层、传输层、网络层和数据链路层。

TCP/IP协议族各层的作用如下:

应用层

应用层决定了向用户提供应用服务时通信的活动。
TCP/IP协议族内预存了各类通用的应用服务。比如**FTP(文件传输协议)**和 DNS(域名系统)服务就是其中两类。

HTTP协议也处于该层。

传输层

传输层对应上层应用层,提供处于网络连接中的两台计算机之间的数据传输。

在传输层,有两个性质不同的协议:TCP(传输控制协议)和UDP(用户数据报协议)

网络层

网络层用来处理在网络上流动的数据包。

数据包是网络传输的最小数据单位。

该层规定了通过怎样的路径(传输线路)到达对方计算机,并把数据包传送给对方。

链路层

用来处理连接网络的硬件部分。

TCP/IP通信传输流

在这里插入图片描述

传输过程

  1. 首先发送端的客户端在应用层(HTTP协议)发出一个想看某个Web页面的HTTP请求。
  2. 接着在传输层(TCP协议)把从应用层收到的数据(HTTP请求报文)进行分割并在各个报文上打上标记序号及端口号转发给网络层。
  3. 在网络层(IP协议族),增加作为通信目的地的MAC地址后,转发给链路层。
  4. 接收端的雾浮起在链路层接收数据,按序往上层发布,一直到应用层。此时才算真正接收到客户端发送过来的HTTP请求。
    在这里插入图片描述
    发送端在层与层之间传输数据前,都会打上一个该层所属的首部信息。反之,接收端则会将每层对应的首部消去。

这种把数据信息包装起来的做法称为封装。

与HTTP关系密切的协议:IP、TCP和DNS

负责传输的IP协议

IP网际协议位于网络层。

IP协议的作用是把各种数据包传送给对方。
而要保证确实传送到对方那里,则需要满足各类条件。其中两个重要的条件是IP地址和MAC地址。

  • IP地址指明了节点被分配到的地址;MAC地址是指网卡所属的固定地址。
  • IP地址可以和MAC地址进行配对。
  • IP地址可变换,但MAC地址基本不会更改。

使用ARP协议凭借MAC地址进行通信

IP间的通信依赖MAC地址。
在网络上,通信的双方通常是经过多台计算机和网络设备中转才能连接到对方。而在进行中转时,会利用下一站中转设备的MAC地址来搜索下一个中转目标。
这时会采用ARP协议。

ARP是一种用以解析地址的协议,根据通信双方的IP地址就可以反查出对方的MAC地址。

确保可靠性的TCP协议

TCP协议位于传输层,提供可靠的字节流服务。

字节流服务是指,将大块数据分割成以报文段为单位的数据包进行管理。
可靠的字节流服务是指,能够把数据准确可靠地传给对方。

总之,TCP协议为了更容易传送大数据才把数据分割,而且TCP协议能够确认数据最终是否送达到对方。

确保数据能到达目标

为了准确无误地将数据送达目标处,TCP协议采用了三次握手策略。

握手过程中使用了TCP的标志(flag) —— SYN 和 ACK。

三次握手的过程:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 发送端首先发送一个带SYN标志的数据包给对方。
  2. 接收端收到后,回传一个带有SYN/ACK标志的数据包以示传达确认信息。
  3. 最后,发送端再回传一个带ACK标志的数据包,代表"握手"结束。
    若在握手过程中某个阶段发生中断,TCP协议会再次以相同的顺序发送相同的数据包。

除了三次握手,TCP协议还有其他手段来保证通信的可靠性。

负责域名解析的DNS服务

DNS服务和HTTP协议一样位于应用层。它提供域名到IP地址之间的解析服务。
计算机既可以被赋予IP地址,也可以被赋予主机名和域名。比如 www.baidu.com

用户通常使用主机名或域名的方式来访问对方的计算机,而不是直接通过IP地址访问。
这是因为字母配数字的表示形式来指定计算机名更符合人类的记忆习惯。

而计算机去理解名称却相对困难,计算机更加擅长去处理数字。

为了解决上述问题,DNS服务应运而生。
DNS协议提供通过域名查找IP地址,或逆向通过IP地址反查域名的服务。

在这里插入图片描述

各种协议与HTTP协议的关系

通过一张图来了解IP协议、TCP协议和DNS服务在使用HTTP协议的通信过程中各自发挥的作用。
在这里插入图片描述

URI和URL

统一资源标识符URI

URI是由某个协议方案表示的资源的定位标识符。

协议方案是指访问资源所使用的协议类型名称。如采用HTTP协议时,协议方案就是http。除此之外,还有ftp、mailto、telnet、file等。

URI用字符串标识某一互联网资源,而URL标识资源的地点(互联网上所处的位置)。因此,
URL时URI的子集。

“RFC3986:统一资源标识符(URI)通用语法”中列举了几种 URI 例子,如下所示。

URI格式

表示指定的URI,要使用涵盖全部必要信息的绝对URI、绝对URL以及相对URL。

相对URL是指,从浏览器中基本URI处指定的URL,形如 /image/logo.gif
在这里插入图片描述

下面是绝对URI格式:

在这里插入图片描述

协议方案名

使用http:或https:等协议方案名获取访问资源时,要指定协议类型。不区分字母大小写,最后附上一个冒号(😃。

登录信息(认证)

指定用户名和密码作为从服务器端获取资源时必要的登录信息(身份认证)。此项是可选项。

服务器地址

使用绝对 URI 必须指定待访问的服务器地址。地址可以是类似hackr.jp 这种 DNS 可解析的名称,或是 192.168.1.1 这类 IPv4 地址名,还可以是 [0:0:0:0:0:0:0:1] 这样用方括号括起来的 IPv6 地址名。

服务端口号

指定服务器连接的网络端口号。此项也是可选项,若用户省略则自动使用默认端口号。

带层次的文件路径

指定服务器上的文件路径来定位特指的资源。

查询字符串

针对已指定的文件路径内的资源,可以使用查询字符串传入任意参数。此项可选。

片段标识符

使用片段标识符通常可标记出已获取资源中的子资源(文档内的某个位置)。但在 RFC 中并没有明确规定其使用方法。该项也为可选项。

参考书籍《图解http》

32、Python网络编程与Web开发全解析 本文全面解析了Python在网络编程和Web开发领域的多种方法和工具。内容涵盖了基于poll的简单服务器实现、Twisted事件驱动框架的使用、屏幕抓取技术、Tidy工具修复不规范HTML以及Beautiful Soup进行高效HTML解析。通过示例代码,详细介绍了如何构建网络应用和Web爬虫。文章还对不同技术的优缺点进行了对比分析,为读者提供了针对不同场景的解决方案。无论是初学者还是有经验的开发者,都能从中获得实用的知识和启发。 阅读详情

相关推荐

29、Python网络编程与Web开发全解析

本博客全面解析了 Python 在网络编程与 Web 开发中的应用。内容涵盖网络编程基础、常见协议(如 FTP、SMTP、POP3、IMAP、NNTP、Telnet 和 Gopher)的使用及对应 Python 模块的操作示例,深入探讨了 Web 开发中的 Python 脚本技术、Web 服务器配置(如 Apache 和其他服务器)的方法,以及邮件服务、新闻组和远程连接的高级处理技巧。通过丰富的代码示例和详细的配置步骤,帮助开发者快速掌握网络通信和 Web 应用开发的核心技能,为未来在物联网、大数据等新兴领

zero1的博客 153

网络编程之WebService

网络编程四 一、网络编程之WebService 1.WebService Web Service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用 程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、 协调和配置这些应用程序,用于开发分布式的交互操作的应用程序。 Web Service技术,能使得运行在不同机器上的不同应用无须借助附加的、专门 的第三方软件或硬件,就可相互交换数据或集成。依据WebService规范实施的应用之 间,无论它们所使用的语言、平台或

TimeMoments的博客 448

31、Go语言网络编程与Web应用开发

本文详细介绍了使用Go语言进行网络编程和Web应用开发的相关知识,涵盖了网络错误处理、搭建简单Web服务器、网站轮询与网页内容读取、Web应用开发实践、应用健壮性优化、模板开发技术等内容。通过代码示例和练习,帮助开发者快速掌握Go语言在网络编程和Web开发中的实际应用。

data3的博客 66

web中网络编程详解

IP地址的介绍 端口和端口号的介绍 TCP的介绍 socket的介绍 TCP网络应用程序开发流程 TCP客户端程序开发 TCP服务端程序开发 TCP网络应用程序的注意点 socket中send和recv原理剖析

qq_52262831的博客 2317

9、.NET网络编程:Web服务器与邮件通信技术

本文详细介绍了.NET网络编程中的Web服务器和邮件通信技术。内容涵盖使用HttpWebListener实现高性能Web服务器、移动Web浏览器支持(包括WAP/WML和iMode技术)、以及基于SMTP协议的邮件通信实现。同时,还讨论了网络编程中的错误处理和未来发展趋势,帮助开发者全面掌握相关技术并应用于实际项目中。

green的博客 136

易语言简易WEB服务器:从源码学习网络编程

易语言是一种以中文作为编程语言的编程工具,它允许开发者使用中文词汇和语法来编写程序代码。这种设计极大地降低了编程的门槛,使得中文用户能够更加方便地参与到软件开发的过程中。易语言不仅提供了丰富的中文编程库,还支持多平台开发,包括Windows、Android等。易语言的出现,为广大没有英语背景的编程爱好者打开了一扇门。它的设计理念是将编程语言“翻译”成易于理解的中文,使得即使是编程新手也能快速上手,创建出自己的应用程序。

weixin_42234168的博客 1055

【QT教程】QML Web网络编程实践 QT Web

WebService技术概述WebService技术概述WebService是一种基于网络的分布式计算技术,它允许不同应用程序通过网络进行通信。WebService使用标准的网络协议(如HTTP)和XML语言来传输数据,这使得不同编程语言和不同平台之间的应用程序能够相互交流和交互。

QT性能优化QT原理源码QT界面美化 1480

深入理解Web服务器与网络编程

本文介绍了Web服务器在宿主多个域时需要使用Host键/值对的细节,并通过网络编程的基本概念和实例程序深入探讨了网络通信的基础。文章详细解析了Socket和ServerSocket的使用方法,包括如何处理超时、如何通过InetAddress类进行主机名与IP地址的转换,以及如何构建一个简单的服务器来处理客户端请求。此外,还探讨了如何实现服务器对多个客户端同时连接的支持。

weixin_42601134的博客 541

A031_web基础_网络编程_Socket_Http_Tomcat

Web基础-网络编程&Http协议&Tomcat模拟 1.内容介绍 1. 计算机网络; (了解) 2. 网络编程相关术语; (了解) 3. TCP协议编程; (掌握) 4. UDP协议; (了解) 5. TCP与UDP的区别; (掌握) 6. Http协议; (掌握) 7. Tomcat模拟; (了解) 2.计算机网络 1.计算机网络是指将地理位置不同的具有独立功能

窗外有风景,笔下有前途,低头是题海,抬头是未来 430

网络编程基础与Web服务器搭建指南

本文详细介绍了网络编程的基础知识,包括TCP/IP协议、IP地址、端口以及HTTP/HTTPS协议。此外,还指导如何搭建自己的Web服务器,步骤包括安装JDK、配置Java运行环境以及安装并启动Apache Tomcat服务器。

weixin_42560991的博客 387

深入理解TCP/IP及网络编程与Web技术

本文深入探讨了TCP/IP协议的基础知识,展示了如何使用C语言进行网络编程,包括TCP服务器和客户端程序的创建与通信。同时,文章还介绍了HTTP协议的基本模型,以及Web页面的创建和托管。通过具体示例和步骤,本文为读者提供了网络编程和Web技术的实践指南。...

weixin_35811662的博客 727

第28篇:Python开发进阶:python网络编程与Web开发

第28篇:Python开发进阶:python网络编程与Web开发

编程技术探索者,分享C/C++、C#、Java、数据库等开发经验,聚焦实战技巧与AI兴趣,助力编程爱好者成长。 1295

深入理解网络编程与Web服务器的实现

本文基于《Chapter 134》内容,深入探讨了网络编程的基础概念,特别是Web服务器的静态与动态内容服务实现。通过分析Tiny Web Server的源代码,展示了如何向客户端提供静态文件、处理动态内容、以及CGI程序的执行。同时,本文还指出了在处理客户端-服务器事务时可能遇到的一些问题,并提供了相应的解决方案。

weixin_42499004的博客 292

第11章-网络编程与Web开发

本章讲解Python网络编程与Web开发,包括Socket网络编程、HTTP协议、Flask/Django/FastAPI框架、RESTful API设计、WebSocket实时通信以及Web安全等核心内容。

qq_31762031的博客 717

Java网络编程-Java Web应用

Java web方面的应用知识 详细讲解!

这可是全网网工数通方向学习路线最完整,最详细的版本,没有之一

文章篇幅较长,耐心看完你一定有所收获。

最铁头的网工博客 2万+

如何快速掌握Python网络编程与Web开发:从基础到实战的完整指南

Python作为一门功能强大且易于学习的编程语言,在网络编程与Web开发领域占据着重要地位。无论是构建简单的网络应用还是复杂的Web系统,Python都提供了丰富的库和框架支持。本文将带你从基础概念出发,逐步深入Python网络编程与Web开发的核心技术,帮助你快速上手并应用到实际项目中。 ## Python网络编程基础 ### 网络通信的基本概念 在进行Python网络编程之前,首先需要了解

gitblog_00379的博客 1057

010Editor实战:5分钟破解Zip伪加密文件(附BUUCTF真题解析)

本文详细介绍了如何使用010Editor快速破解Zip伪加密文件,包括BUUCTF真题的完整解析。通过修改关键字节,轻松解除伪加密状态,适用于CTF竞赛和实际工作场景,提升文件处理效率。

weixin_29325007的博客 326

Python网络编程与Web开发

1.背景介绍 Python网络编程与Web开发 1. 背景介绍 Python是一种流行的高级编程语言,它具有简洁、易读、易写和易于维护等优点。Python在网络编程和Web开发领域也有着广泛的应用。本文将从以下几个方面进行深入探讨: 核心概念与联系 核心算法原理和具体操作步骤 数学模型公式详细讲解 具体最佳实践:代码实例和详细解释说明 实际应用场景 工具和资源推荐 总结:未来发展趋势与挑...

AI天才研究院 850

数字芯片后端设计实战:Memory Compiler参数配置与SRAM生成优化

本文深入解析数字芯片后端设计中Memory Compiler的核心参数配置与SRAM生成优化策略。详细探讨了容量结构、频率设定、工艺角选择等关键参数的配置要点与常见误区,并提供了从.lib/.lef文件转换到后端流程整合的实战指南,旨在帮助设计者生成面积、性能和功耗更优的存储单元。

weixin_29194255的博客 701

YOLOv5 自定义模型 Android 部署完整指南

本文详细介绍了将YOLOv5模型部署到Android设备的完整流程,包含三个核心部分:首先验证官方模型测试,确保基础环境配置正确;随后进行模型转换,从PyTorch导出ONNX格式并优化,再转换为NCNN格式;最后在Android项目中集成自定义模型,包括文件替换、参数修改和代码适配。教程基于YOLOv5 6.1版本,使用NCNN框架进行移动端推理,涵盖了常见问题解决方案和关键配置要点,为开发者提供了从训练到部署的完整技术路线。

FJN110的博客 591

Python的网络编程与Web开发

1.背景介绍 1. 背景介绍 Python是一种广泛使用的编程语言,它在各种领域得到了广泛应用,包括网络编程和Web开发。Python的网络编程和Web开发是指使用Python编写的程序,通过网络进行数据的传输和交换,以及构建和管理Web应用程序。 Python的网络编程和Web开发具有以下特点: 简洁易读的语法,使得开发者可以快速编写高质量的代码。 丰富的标准库,包含了许多用于网络编程...

AI天才研究院 391

区块链技术与应用 【全国职业院校技能大赛国赛题目解析】Caliper从0到使用

技能大赛样题解析,caliper题目从0到使用

weixin_52865146的博客 2075
上一篇: Go - context包的使用
下一篇: get与post到底有什么区别? post到底是发几个数据包?
看繁星aa
博客等级 码龄4年 922粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值