精华内容
下载资源
问答
  • 浏览器访问网站过程

    2019-09-18 06:21:03
    1.连接 当我们输入这样一个请求时,首先要建立一个socket连接,...DNS的过程是这样的:首先我们知道我们本地的机器上在配置网络时都会填写DNS,这样本机就会把这个url发给这个配置的DNS服务器,如果能够找到相 应的u...

    1.连接 当我们输入这样一个请求时,首先要建立一个socket连接,因为socket是通过ip和端口建立的,所以之前还有一个DNS解析过程,把http://www.baidu.com/变成ip,如果url里不包含端口号,则会使用该协议的默认端口号。
    DNS的过程是这样的:首先我们知道我们本地的机器上在配置网络时都会填写DNS,这样本机就会把这个url发给这个配置的DNS服务器,如果能够找到相 应的url则返回其ip,否则该DNS将继续将该解析请求发送给上级DNS,整个DNS可以看做是一个树状结构,该请求将一直发送到根直到得到结果。现在 已经拥有了目标ip和端口号,这样我们就可以打开socket连接了。
    2.请求 连接成功建立后,开始向web服务器发送请求,这个请求一般是GET或POST命令(POST用于FORM参数的传递)。GET命令的格式为:  GET 路径/文件名 HTTP/1.0
    文件名指出所访问的文件,HTTP/1.0指出Web浏览器使用的HTTP版本。现在可以发送GET命令:
    GET /mytest/index.html HTTP/1.0,
    3.应答 web服务器收到这个请求,进行处理。从它的文档空间中搜索子目录mytest的文件index.html。如果找到该文件,Web服务器把该文件内容传送给相应的Web浏览器。
    为了告知浏览器,,Web服务器首先传送一些HTTP头信息,然后传送具体内容(即HTTP体信息),HTTP头信息和HTTP体信息之间用一个空行分开。
    常用的HTTP头信息有:
      ① HTTP 1.0 200 OK  这是Web服务器应答的第一行,列出服务器正在运行的HTTP版本号和应答代码。代码"200 OK"表示请求完成。
      ② MIME_Version:1.0 它指示MIME类型的版本。
      ③ content_type:类型 这个头信息非常重要,它指示HTTP体信息的MIME类型。如:content_type:text/html指示传送的数据是HTML文档。
      ④ content_length:长度值 它指示HTTP体信息的长度(字节)。

    4.关闭连接:当应答结束后,Web浏览器与Web服务器必须断开,以保证其它Web浏览器能够与Web服务器建立连接。

    展开全文
  • #host是本机地址,serverPort是端口号,程序运行后,在浏览器中输入 127.0.0.1:8888/index.html 即可访问主页 host = ‘127.0.0.1’ 或者输入本机ip port = 8888 #创建了服务器的套接字,其中AF_INET表示使用的是...

    知识如下:

    #导入socket 模块
    from socket import
    #host是本机地址,serverPort是端口号,程序运行后,在浏览器中输入 127.0.0.1:8888/index.html 即可访问主页
    host = ‘127.0.0.1’ 或者输入本机ip
    port = 8888
    #创建了服务器的套接字,其中AF_INET表示使用的是IPV4协议,SOCKER_STREAM表示使用的是TCP套接字
    SocK_1 = socket(AF_INET , SOCK_STREAM)

    #表示将服务端端口与套接字连接起来
    SocK_1.bind((host , port))

    #让服务器聆听TCP连接,参数为请求连接的最大数目
    Sock_1.listen(128)

    #打开index.html 网页文件 然后以2进制可读的方式
    with open(‘index.html’ , ‘rb’) as f:
    data=f.read()
    #可以读取data 以send 的方式传到网页上 不过在传输数据时时 前面要加上响应首行和响应首部 然后在响应体
    new_sock.send(‘HTTP/1.1 200 OK\r\n’.encode())
    new_sock.send(‘Content-Type:text/html;charset=utf-8\r\n’.encode())
    new_sock.send(’\r\n’.encode())
    new_sock.send(data)

    #HTTP/1.1 200 ok服务器响应文件的报文头,第一位是HTTP协议,然后是状态 200 ok
    #如果没有请求到文件,则替换 200 ok 为 404 Not Found。
    #Content-Type 指的是文件类型,你要回传html类型的文件。就是text/html,
    Content-Type: text/html,如果是png图片,则是image/png 具体根据文件格式去查找相应名称
    #一定一定要注意格式,不能有变化,否则浏览器不能正确理解文件类

    #一直循环等待请求连接
    while TRUE :
    #当有客户机响应时,则建立TCP连接
    newsocket,addr = sock_1.accept()
    sentence收到的是客户发送请求的报文,里面有请求方法,请求文件等
    sentence = newsocket.recv(1024)
    #接受到的为2进制 需要解码为utf-8 加上 .decode()默认解码为utf-8

    展开全文
  • 用手机或者电脑都的浏览器都是可以访问的,前提是必须先运行该服务器,并且手机或者电脑必须跟运行该程序的本机是在同一个局域网内,这样你就只要在手机或者电脑灯呃浏览器里输入本机电脑的IP地址就可以直接访问这个...
    <pre name="code" class="java"><pre name="code" class="java">import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStreamWriter;
    import java.io.PrintWriter;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    public class MyServer {
    	public static void main(String[] args) throws IOException {
    		ServerSocket ser = new ServerSocket(80);
    		Socket s=null;
    		while (true) {
    			s = ser.accept();
    			System.out.println(s.getInetAddress().getHostAddress()
    					+ "....connected");
    			InputStream in = s.getInputStream();
    			byte bs[] = new byte[1024];
    			int len = in.read(bs);
    			String str = new String(bs, 0, len);
    			System.out.println(str);
    			//应答
    			PrintWriter out = new PrintWriter(new OutputStreamWriter(
    					s.getOutputStream(), "gbk"), true);
    			out.println("<html><body>");//头
    			out.println("欢迎光临....<br/>");//<br/>换行
    			out.println("<font size=10 color=green>这是我用Java程序给你发的网页,比较简单,请多包涵...</font>");
    			out.println("<table border=1 bordercolor='red' >");//表头
    			out.println("<tr> <td>Jack</td> <td>25</td> </tr>");
    			out.println("<tr> <td>Tom</td> <td>24</td> </tr>");
    			out.println("</table>");//表尾
    			out.println("</body></html>");//尾
    			s.close();
    		}
    	}
    }
    


    
    
    
    
    展开全文
  • 打开 <code>chrome://net-internals/#dns</code> 即可查看本机浏览器的 dns 缓存。 <h4>2. 系统缓存 浏览器会调用一个类似 <code>gethostbyname</code> 的库函数,此函数会先去检测本地 hosts 文件,...
  • 浅谈HTTP服务

    2019-12-07 11:51:26
    浅谈HTTP服务Socket套接字HTTP超文本传输协议浏览器如何访问网站HTTP协议通信过程HTTP协议分层HTTP相关术语HTTP协议发展版本差异HTTP工作机制URI和URLHTTP 请求访问的完整过程 Socket套接字 在建立通信连接的每一端...

    Socket套接字

    在建立通信连接的每一端,进程间的传输要有两个标志:

    • IP地址和端口号,合称为套接字地址(socket address)
    • 客户机套接字地址定义了一个唯一的客户进程
    • 服务器套接字地址定义了一个唯一的服务器进程
      在这里插入图片描述
      Socket:套接字,进程间通信(IPC)的一种实现,允许位于不同主机(或同一主机)上不同进程之间进行通信和数据交换
    • Socket API:封装了内核中所提供的socket通信相关的系统调用
    • Socket Domain:根据其所使用的地址
      • AF_INET:Address Family,IPv4
      • AF_INET6:IPv6
      • AF_UNIX:同一主机上不同进程之间通信时使用
    • Socket Type:根据使用的传输层协议
      • SOCK_STREAM:流,TCP套接字,可靠地传递、面向连接
      • SOCK_DGRAM:数据报,UDP套接字,不可靠地传递、无连接
      • SOCK_RAW:裸套接字,无须TCP或UDP,应用直接通过IP包通信
    • Socket位于传输层与应用层之间,连接了应用层细节与通信细节,负责用户进程与系统内核的交互

    HTTP超文本传输协议

    浏览器如何访问网站

    在这里插入图片描述

    HTTP协议通信过程

    • HTTP(HyperText Transfer Protocol,超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议。
    • HTTP是万维网的数据通信的基础设计HTTP最初的目的是为了提供一种远距离共享知识的方式,借助多文档进行关联实现超文本,连成相互参阅的WWW
      在这里插入图片描述

    HTTP协议分层

    在这里插入图片描述

    HTTP相关术语

    • http(hyper text transfer protocol):超文本传输协议,TCP连接端口80

    • html(hyper text markup language):超文本标记语言,一种描述网页结构的编程语言

      • http与html的关系:http协议传输的文本文件依据使用的编程语言,可以分为html, css, javascript文件等
    • MIME(Multipurpose Internet Mail Extensions):多用途互联网邮件拓展,支持在互联网上传输各种格式的文件

      • 在文件/etc/mime.types中详细列举了支持的文件类型
      • 格式:major/minor ,一级类型/二级类型,如:
        text/html, image/jpeg, video/mp4

    HTTP协议发展版本差异

    • http/0.9,1991年发布,只有GET命令GET /index.html ,服务器只能回应HTML格式字符
      串,不能回应别的格式

    • http/1.0,1996年5月发布,增加了POST, HEAD命令

      • 支持cache, MIME, method
      • 每个TCP连接只能发送一个请求
      • 头信息是ASCII 码,后面数据可为任何格式
      • Content-Type字段说明数据格式,包含在MIME中
    • http/1.1(目前最普遍),1997年1月发布,新增命令PUT, PATCH, OPTIONS, DELETE

      • 持久连接(persistent connection):TCP连接默认不关闭,可以被多个请求复用
      • 管道机制(pipelining):同一个TCP连接里可以同时发送多个请求
      • 队头堵塞(Head-of-line blocking):服务器顺序处理请求,前方请求回应慢,造成很多请求排队
      • http协议不带状态,连接断开后服务器将失去客户端信息,每次请求需发送相同信息,浪费带宽
        在这里插入图片描述
    • HTTP1.0和1.1的问题

      • HTTP1.x在传输数据时,每次都需要重新建立连接,无疑增加了大量的延迟时间,特别是在移动端更为突出
      • HTTP1.x在传输数据时,所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份,无法保证数据的安全性
      • HTTP1.x在使用时,header里携带的内容过大,增加了传输的成本,并且每次请求header基本不怎么变化,尤其在移动端增加用户流量
      • 虽然HTTP1.x支持了keep-alive,来弥补多次创建连接产生的延迟,但是keep-alive使用多了同样会给服务端带来大量的性能压力,并且对于单个文件被不断请求的服务(例如图片存放网站),keep-alive可能会极大的影响性能,因为它在文件被请求之后还保持了不必要的连接很长时间
    • HTTP2.0协议2015年,HTTP2.0是谷歌SPDY的升级版

      • 头信息和数据体都是二进制,称为头信息帧和数据帧
      • 复用TCP连接,在一个连接里,客户端和浏览器都可以同时发送多个请求或回应,且不用按顺序一一对应,避免了“队头堵塞“,此双向的实时通信称为多工(Multiplexing)
      • 引入头信息压缩机制(header compression),头信息使用gzip或compress压缩后再发送;客户端和服务器同时维护一张头信息表,所有字段都会存入这个表,生成一个索引号,不发送同样字段,只发送索引号,提高速度
      • HTTP/2 允许服务器未经请求,主动向客户端发送资源,即服务器推送(server push)

    HTTP工作机制

    • 事务:包含http请求和http响应

    • web资源:多个资源组成一个网页

      • 静态文件:无需服务端做出额外处理
      • 文件后缀:.jpg, .html, .txt, .js, .css, .mp3, .avi
      • 动态文件:服务端执行程序,返回执行的结果
      • 文件后缀:.asp, .php, .jsp
    • 提高HTTP连接性能的方法

      • 并行连接:通过多条TCP连接发起并发的HTTP请求
      • 持久连接:重用TCP连接,以消除连接和关闭的时延,以事务个数和时间来决定是否关闭连接
      • 管道化连接:通过共享TCP连接发起并发的HTTP请求
      • 复用的连接:交替传送请求和响应报文(实验阶段)
    • 传统HTTP连接:串行连接,每个事务都需要建立和断开连接一次
      在这里插入图片描述

    • 并行连接:同时进行多个事务,事务之间并行运行
      在这里插入图片描述

    • 持久连接: 一个连接过程依次完成多个事务,减少了建立和断开连接的时间
      在这里插入图片描述

    • 管道连接: 一个连接过程同时进行多个事务,进一步减少了时间开销
      在这里插入图片描述

    URI和URL

    • URI(Uniform Resource Identifier):统一资源标识,分为URN和URL
    • URN(Uniform Resource Naming):统一资源命名,用于给资源定义一个唯一的命名
    • URL(Uniform Resource Locator):统一资源定位,用于描述某服务器某特定资源的位置
    • URL的组成:
      在这里插入图片描述

    <scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>

    • scheme:方案,指定连接服务器使用的协议
    • user:用户名
    • password:密码
    • host:服务器的主机名或IP地址
    • port:端口号
    • path:服务器资源本地名
    • params:参数,参数为名/值对,多个参数用";"分隔
    • query:查询,用"?“分隔,多个查询用”&"分隔
    • frag:片段,在客户端使用,用"#"分隔

    HTTP 请求访问的完整过程

    在这里插入图片描述
    1️⃣建立连接:
    接收或拒绝连接请求
    2️⃣接受请求:
    接收客户端请求报文中对某资源的一次请求的过程
    在这里插入图片描述
    Web访问响应模型(Web I/O)

    • 单进程I/O模型:启动一个进程处理用户请求,而且一次只处理一个,多个请求被串行响应
    • 多进程I/O模型:并行启动多个进程,每个进程响应一个连接请求
    • 复用I/O结构:启动一个进程,同时响应N个连接请求
      • 实现方法:多线程模型和事件驱动
      • 多线程模型:一个进程生成N个线程,每线程响应一个连接请求
      • 事件驱动:一个进程处理N个请求
    • 复用的多进程I/O模型:启动M个进程,每个进程响应N个连接请求,同时接收M*N个请求

    3️⃣处理请求:
    服务器对请求报文进行解析,并获取请求的资源及请求方法等相关信息,根据方法,资
    源,首部和可选的主体部分对请求进行处理

    • 常用请求Method: GET、POST、HEAD、PUT、DELETE、TRACE、OPTIONS

    4️⃣访问资源:
    服务器获取请求报文中请求的资源web服务器,即存放了web资源的服务器,负责向请求者提供对方请求的静态资源,或动态运行后生成的资源

    • web服务器资源路径映射方式:
      • docroot
      • alias
      • 虚拟主机docroot
      • 用户家目录docroot

    5️⃣构建响应报文:
    服务器执行请求方法中描述的动作,并返回响应报文。响应报文中包含有响应状态码、响应首部,如果生成了响应主体的话,还包括响应主体。

    • 响应报文通常包括:

      • Content-Type:响应首部元素,描述响应主体的MIME类型
      • Content-Length:响应首部元素,描述响应主体的长度
    • 识别MIME类型的策略:

      • 魔法分类:服务器扫描资源的内容,并将其与一个已知模式表(被称为魔法文件)进行匹配
      • 显示分类:强制特定文件或目录内容拥有某个MIME类型
      • 类型协商: 有些Web服务器经过配置,可以以多种文档格式来存储资源。在这种情况下,可以配置Web服务器,使其可以通过与用户的协商来决定使用哪种格式(及相关的MIME类型)“最好”
      • 默认先根据文件的后缀名判断MIME类型,如果没有后缀名再通过魔法分类识别

    6️⃣发送响应报文:

    • 非持久连接而言,服务器应该在发送了整条报文之后,关闭自己这一端的连接。
    • 持久连接来说,连接可能仍保持打开状态。

    7️⃣记录日志
    最后,当事务结束时,Web服务器会在日志文件中添加一个条目,来描述已执行的事务

    8️⃣http服务器应用

    • http服务器程序
      httpd apache
      nginx
      lighttpd
    • 应用程序服务器
      IIS .asp
      tomcat .jsp
      jetty 开源的servlet容器,基于Java的web容器

    展开全文
  • socket,求一段可以跑通的C++代码,可以响应在本机浏览器访问请求并弹出网页。 谢谢。如果谁有共享下,最好简练点。
  • 基础的HTTP服务器

    2020-01-21 09:50:02
    【基础的http服务器】 ...给出一定的响应 ...# 1....# 2....# 在浏览器输入本机ip:端口号即可访问index.html from socket import * # 处理客户请求,返回响应 def handleClient(connfd): # 接收消息 requ...
  • 6.9 访问本机内存与存储卡 6.10 实现可定时响起的闹钟 6.11 黑名单来电自动静音 6.12 手机翻背面即静音振动 6.13 指定时间置换桌面背景 6.14 判断发送短信后的状态 6.15 后台服务送出广播信息 6.16 开机程序设计 ...
  • 6.9 访问本机内存与存储卡 6.10 实现可定时响起的闹钟 6.11 黑名单来电自动静音 6.12 手机翻背面即静音振动 6.13 指定时间置换桌面背景 6.14 判断发送短信后的状态 6.15 后台服务送出广播信息 6.16 开机程序设计 ...
  • javaee http

    2020-07-20 12:02:04
    浏览器和web服务器的交互) tcp/ip协议栈不需要我们关注,操作系统实现了。调用os的协议栈 来进行交互。 tcp\ip只负责传输数据。(010101串),数据代表什么意思,需要另外协议的支撑。http(只关心格式,不关心...
  • 4、网银、在线支付等安全性要求高的网站,可基于中间件开发安全控件、访问U盾等的加密模块提供访问安全性; 5、开发去中心化的分布式系统应用,如充分利用分散的系统计算能力。 针对不同的业务使用场景,PluginOK...
  • 4、网银、在线支付等安全性要求高的网站,可基于中间件开发安全控件、访问U盾等的加密模块提供访问安全性; 5、开发去中心化的分布式系统应用,如充分利用分散的系统计算能力。 针对不同的业务使用场景,PluginOK...
  • 6.9 访问本机内存与存储卡 329 6.10 实现可定时响起的闹钟 335 6.11 黑名单来电自动静音 340 6.12 手机翻背面即静音振动 343 6.13 指定时间置换桌面背景 349 6.14 判断发送短信后的状态 357 6.15...
  • -台式。Microsoft Edge 12 +,Google Chrome 28 +,Mozilla Firefox 22 +,Safari 11 +,Opera 18 +,Vivaldi 1.9 +,IE 11(需要安装Temasys插件。将指导您完成安装过程) -Android。Google Chrome 28+(自29...
  • Android 上百实例源码分析以及开源分析 集合打包4

    千次下载 热门讨论 2012-07-10 21:54:03
    继承了服务Service(后台运行和跨进程访问) 创建了一个线程负责输出信息到文件 注册了广播接收器ACTION_BATTERY_CHANGED BatteryDog 继承了Activity 布局battery_dog 文件 主要负责启动/关闭服务Service 和分析数据...
  • io.sockets.socket(socketid).emit():向指定客户端发送消息,新版本用io.sockets.socket[socketid].emit() ,数组访问 socket.broadcast.emit():向除去建立该连接的客户端的所有客户端广播 io.sockets.emit():向...
  • 浏览器访问一个站点,如何确定这个站点不是黑客的服务器? 主要内容 章介绍介绍使用加密技术和证书机制的一个实际应用,基于SSL和HTTPS的编程。学完章可以编写自己的SSL和HTTPS客户及服务器程序。 第八章 解决的...
  • 浏览器访问 /install ,根据提示进行安装 2.1及以下版本的安装示例 Windows安装教程 Linux安装示例 Linux 宝塔安装示例 更多文档 http://www.masterlab.vip/help.php 截 图 在使用中有任何问题,请使用...
  • 16.12.4 本机地址 133 16.12.5 回送地址 133 16.13 特殊IP地址小结 134 16.14 伯克利广播地址格式 134 16.15 路由器和IP编址原则 134 16.16 多穴主机 135 16.17 小结 135 练习 135 第17章 协议地址联编 137 17.1 ...
  • java源码包---java 源码 大量 实例

    千次下载 热门讨论 2013-04-18 23:15:26
    第二步:运行LoginData.java 启动(客户端)登陆界面 输入用户名 ip为本机localhost 第三步:在登陆后的界面文本框输入文本,然后发送 可以同时启动多个客户端 实现群聊。 浮动的广告 嵌套在html中 各种EJB之间的...
  • 下载项目后,进入DocApi目录,使用浏览器打开index.html文件即可 在线文档:接口文档 你只需要关注 ↓ order - 创建支付订单 无需关注↓ android - 接收推送客户端信息 android - 验证客户端 客户端配置 api 地址...
  • java源码包2

    千次下载 热门讨论 2013-04-20 11:28:17
    第二步:运行LoginData.java 启动(客户端)登陆界面 输入用户名 ip为本机localhost 第三步:在登陆后的界面文本框输入文本,然后发送 可以同时启动多个客户端 实现群聊。 浮动的广告 嵌套在html中 各种EJB之间的...
  • java源码包3

    千次下载 热门讨论 2013-04-20 11:30:13
    第二步:运行LoginData.java 启动(客户端)登陆界面 输入用户名 ip为本机localhost 第三步:在登陆后的界面文本框输入文本,然后发送 可以同时启动多个客户端 实现群聊。 浮动的广告 嵌套在html中 各种EJB之间的...
  • 说明:默认配置文件就已经能够实现匿名用户对/var/ftp文件内容的下载,以及本机用户对自已主目录的访问(上传与下载)。 20.3 vsftp配置基本实例 20.3.1 改变端口号 vi vsftpd.conf #新增底下一行,原有的配置不动 ...
  • 11.4 数据链路层访问 317 11.4.1 sock_packet类型 317 11.4.2 设置套接口以捕获链路帧的编程方法 317 11.4.3 从套接口读取链路帧的编程方法 318 11.4.4 定位ip包头的编程方法 319 11.4.5 定位tcp报头的编程方法...
  • 多人聊天室 3个目标文件 第一步:运行ServerData.java 启动服务器,然后服务器处于等待状态 第二步:运行LoginData.java 启动(客户端)登陆界面 输入用户名 ip为本机localhost 第三步:在登陆后的界面文本框输入文本...
  • 多人聊天室 3个目标文件 第一步:运行ServerData.java 启动服务器,然后服务器处于等待状态 第二步:运行LoginData.java 启动(客户端)登陆界面 输入用户名 ip为本机localhost 第三步:在登陆后的界面文本框输入文本...
  • 多人聊天室 3个目标文件 第一步:运行ServerData.java 启动服务器,然后服务器处于等待状态 第二步:运行LoginData.java 启动(客户端)登陆界面 输入用户名 ip为本机localhost 第三步:在登陆后的界面文本框输入文本...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
    第二步:运行LoginData.java 启动(客户端)登陆界面 输入用户名 ip为本机localhost 第三步:在登陆后的界面文本框输入文本,然后发送 可以同时启动多个客户端 实现群聊。 浮动的广告 嵌套在html中 各种EJB之间的...

空空如也

空空如也

1 2 3
收藏数 48
精华内容 19
关键字:

本机socket服务浏览器访问