编辑
2024-05-17
LinuxNotes
00

目录

1)获取到www.baidu.com 这个域名的IP地址,(方法不限,能获取到即可,不过需要说明这个域名是通过什么组件获取到IP地址的)
2)使用你熟悉的工具,判断刚才获取到的IP地址是通的,http服务端口是正常的,访问https://www.baidu.com/ 的网页访问能够是正常获取到baidu返回的html页面(现阶段请使用命令行,不要用浏览器访问一下来回答我,你的虚拟机是没有浏览器的)
3)请说明从你的那台虚拟机,访问到www.baidu.com,并获拿到那个html内容,如下或者请使用HTTP状态码判断(成功或者失败的状态码,在讲义应用层部分),这里边都经历了哪些过程。
常见的HTTP状态码
一、状态码大类
二、常见的响应状态码
拓展

1)获取到www.baidu.com 这个域名的IP地址,(方法不限,能获取到即可,不过需要说明这个域名是通过什么组件获取到IP地址的)

  • 使用ping命令来获取www.baidu.com 域名的IP地址
bash
gyc@GYC:~$ ping www.baidu.com PING www.baidu.com (198.18.0.84) 56(84) bytes of data. 64 bytes from 198.18.0.84 (198.18.0.84): icmp_seq=1 ttl=63 time=0.894 ms 64 bytes from 198.18.0.84 (198.18.0.84): icmp_seq=2 ttl=63 time=0.203 ms 64 bytes from 198.18.0.84 (198.18.0.84): icmp_seq=3 ttl=63 time=0.199 ms 64 bytes from 198.18.0.84 (198.18.0.84): icmp_seq=4 ttl=63 time=0.199 ms 64 bytes from 198.18.0.84 (198.18.0.84): icmp_seq=5 ttl=63 time=0.161 ms ^C64 bytes from 198.18.0.84: icmp_seq=6 ttl=63 time=0.205 ms --- www.baidu.com ping statistics --- 6 packets transmitted, 6 received, 0% packet loss, time 6131ms rtt min/avg/max/mdev = 0.161/0.310/0.894/0.261 ms

www.baidu.com 域名IP地址为 198.18.0.84

2)使用你熟悉的工具,判断刚才获取到的IP地址是通的,http服务端口是正常的,访问https://www.baidu.com/ 的网页访问能够是正常获取到baidu返回的html页面(现阶段请使用命令行,不要用浏览器访问一下来回答我,你的虚拟机是没有浏览器的)

  1. 使用ping命令来判断网络可达
bash
gyc@GYC:~$ ping 198.18.0.84 PING 198.18.0.84 (198.18.0.84) 56(84) bytes of data. 64 bytes from 198.18.0.84: icmp_seq=1 ttl=63 time=0.387 ms 64 bytes from 198.18.0.84: icmp_seq=2 ttl=63 time=0.728 ms 64 bytes from 198.18.0.84: icmp_seq=3 ttl=63 time=0.587 ms 64 bytes from 198.18.0.84: icmp_seq=4 ttl=63 time=0.464 ms 64 bytes from 198.18.0.84: icmp_seq=5 ttl=63 time=0.348 ms ^C --- 198.18.0.84 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4181ms rtt min/avg/max/mdev = 0.348/0.502/0.728/0.139 ms
  1. 使用telnet检查http端口是否正常
bash
gyc@GYC:~$ telnet 198.18.0.84 80 Trying 198.18.0.84... Connected to 198.18.0.84. Escape character is '^]'.
  1. 使用curl 来获取baidu的html页面, 以此判断是否能够正常访问
bash
gyc@GYC:~$ curl www.baidu.com -o baidu.html % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 2381 100 2381 0 0 19046 0 --:--:-- --:--:-- --:--:-- 19201 gyc@GYC:~$ ls Algorithm baidu.html # 显示的为格式化过的HTMl gyc@GYC:~$ cat baidu.html <!DOCTYPE html> <!--STATUS OK--> <html> <head> <meta http-equiv=content-type content=text/html;charset=utf-8> <meta http-equiv=X-UA-Compatible content=IE=Edge> <meta content=always name=referrer> <link rel=stylesheet type=text/css href=http://s1.bdstatic.com/r/www/cache/bdorz/baidu.min.css> <title>百度一下,你就知道</title></head> <body link=#0000cc> <div id=wrapper> <div id=head> <div class=head_wrapper> <div class=s_form> <div class=s_form_wrapper> <div id=lg><img hidefocus=true src=//www.baidu.com/img/bd_logo1.png width=270 height=129></div> <form id=form name=f action=//www.baidu.com/s class=fm><input type=hidden name=bdorz_come value=1> <input type=hidden name=ie value=utf-8> <input type=hidden name=f value=8> <input type=hidden name=rsv_bp value=1> <input type=hidden name=rsv_idx value=1> <input type=hidden name=tn value=baidu><span class="bg s_ipt_wr"><input id=kw name=wd class=s_ipt value maxlength=255 autocomplete=off autofocus></span><span class="bg s_btn_wr"><input type=submit id=su value=百度一下 class="bg s_btn"></span> </form> </div> </div> <div id=u1><a href=http://news.baidu.com name=tj_trnews class=mnav>新闻</a> <a href=http://www.hao123.com name=tj_trhao123 class=mnav>hao123</a> <a href=http://map.baidu.com name=tj_trmap class=mnav>地图</a> <a href=http://v.baidu.com name=tj_trvideo class=mnav>视频</a> <a href=http://tieba.baidu.com name=tj_trtieba class=mnav>贴吧</a> <noscript><a href=http://www.baidu.com/bdorz/login.gif?login&amp;tpl=mn&amp;u=http%3A%2F%2Fwww.baidu.com%2f%3fbdorz_come%3d1 name=tj_login class=lb>登录</a></noscript> <script>document.write('<a href="http://www.baidu.com/bdorz/login.gif?login&tpl=mn&u=' + encodeURIComponent(window.location.href + (window.location.search === "" ? "?" : "&") + "bdorz_come=1") + '" name="tj_login" class="lb">登录</a>');</script> <a href=//www.baidu.com/more/ name=tj_briicon class=bri style="display: block;">更多产品</a></div> </div> </div> <div id=ftCon> <div id=ftConw><p id=lh><a href=http://home.baidu.com>关于百度</a> <a href=http://ir.baidu.com>About Baidu</a> </p> <p id=cp>&copy;2017&nbsp;Baidu&nbsp;<a href=http://www.baidu.com/duty/>使用百 度前必读</a>&nbsp; <a href=http://jianyi.baidu.com/ class=cp-feedback>意见反馈</a>&nbsp;京ICP证030173号&nbsp; <img src=//www.baidu.com/img/gs.gif></p></div> </div> </div> </body> </html>

3)请说明从你的那台虚拟机,访问到www.baidu.com,并获拿到那个html内容,如下或者请使用HTTP状态码判断(成功或者失败的状态码,在讲义应用层部分),这里边都经历了哪些过程。

  1. DNS解析, 像DNS服务器发起请求, 找到www.baidu.com 域名的IP地址(198.18.0.84).
  2. 建立TCP连接,虚拟机与 198.18.0.84 建立一个 TCP 连接,使用三次握手(SYN、SYN-ACK、ACK)来确保连接的建立.
  3. 发送 HTTP 请求, TCP 连接建立成功后,虚拟机会向 Baidu 服务器发送一个 HTTP GET 请求,以请求获取 www.baidu.com 的 HTML 内容。
  4. 服务器处理请求
    • Baidu 服务器接收到 GET 请求后,会处理请求并生成相应的 HTML 页面内容。
    • 服务器返回 HTTP 响应,其中包含状态码、响应头和 HTML 内容。
  5. 接收 HTTP 响应, 使用curl将响应接受到的html页面保存到虚拟机中并使用cat命令查看

常见的HTTP状态码

一、状态码大类

状态码分类说明
1xx响应中——临时状态码,表示请求已经接受,告诉客户端应该继续请求或者如果它已经完成则忽略它
2xx成功——表示请求已经被成功接收,处理已完成
3xx重定向——重定向到其它地方:它让客户端再发起一个请求以完成整个处理。
4xx客户端错误——处理发生错误,责任在客户端,如:客户端的请求一个不存在的资源,客户端未被授权,禁止访问等
5xx服务器端错误——处理发生错误,责任在服务端,如:服务端抛出异常,路由出错,HTTP版本不支持等

二、常见的响应状态码

状态码英文描述解释
==200==OK客户端请求成功,即处理成功,这是我们最想看到的状态码
302Found指示所请求的资源已移动到由Location响应头给定的 URL,浏览器会自动重新访问到这个页面
304Not Modified告诉客户端,你请求的资源至上次取得后,服务端并未更改,你直接用你本地缓存吧。隐式重定向
400Bad Request客户端请求有语法错误,不能被服务器所理解
403Forbidden服务器收到请求,但是拒绝提供服务,比如:没有权限访问相关资源
==404==Not Found请求资源不存在,一般是URL输入有误,或者网站资源被删除了
405Method Not Allowed请求方式有误,比如应该用GET请求方式的资源,用了POST
428Precondition Required服务器要求有条件的请求,告诉客户端要想访问该资源,必须携带特定的请求头
429Too Many Requests指示用户在给定时间内发送了太多请求(“限速”),配合 Retry-After(多长时间后可以请求)响应头一起使用
431 Request Header Fields Too Large请求头太大,服务器不愿意处理请求,因为它的头部字段太大。请求可以在减少请求头域的大小后重新提交。
==500==Internal Server Error服务器发生不可预期的错误。服务器出异常了,赶紧看日志去吧
503Service Unavailable服务器尚未准备好处理请求,服务器刚刚启动,还未初始化好

拓展

可以使用curl -I [URL]命令查看 HTTP响应头信息, 以此来查看是否可以成功请求http响应

bash
gyc@GYC:~$ curl -I www.baidu.com HTTP/1.1 200 OK Accept-Ranges: bytes Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform Connection: keep-alive Content-Length: 277 Content-Type: text/html Date: Fri, 17 May 2024 04:52:30 GMT Etag: "575e1f71-115" Last-Modified: Mon, 13 Jun 2016 02:50:25 GMT Pragma: no-cache Server: bfe/1.0.8.18
  • HTTP/1.1 200 OK:状态码表明请求成功。
  • Accept-Ranges: bytes:服务器支持按字节范围请求。
  • Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform:控制缓存行为的指令。
  • Connection: keep-alive:表示客户端和服务器之间的连接持久保持。
  • Content-Length: 277:返回内容的长度为 277 字节。
  • Content-Type: text/html:返回内容的类型为 HTML。
  • Date: Fri, 17 May 2024 04:52:30 GMT:响应的日期时间。
  • Etag: "575e1f71-115":用于标识资源版本的标记。
  • Last-Modified: Mon, 13 Jun 2016 02:50:25 GMT:资源的最后修改时间。
  • Pragma: no-cache:控制缓存行为的指令。
  • Server: bfe/1.0.8.18:服务器软件信息。
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:GYC

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!