耍废也要有期限,期限是25分钟,这样才不会浪费太多时间,
我去买了全家的橘香巧克力,跟我所想的味道一样,坦白说我不喜欢,
不是不好吃,是味道很奇怪,真要说的话,我觉得之前的小农鲜奶霜淇淋比较好吃,
然后更好吃的是草莓,比草莓更好吃的是抹茶,我期待这两种口味回归的时候。
今天懒洋洋的,连早上也被我刻意睡过去(平常的话就早起拼进度了阿)
我到现在还是什么都不太想做!!
但是我今天无论如何都要完成昨天的功课,所以我提早停止耍废了:
1.当发出一个 GET/POST 请求时,中间过程会经过哪些传输协定
[img]https://upload.cc/i1/2021/12/02/2f4oPT.png[/img]
一开始浏览器会先跟服务器进行三向交握,接着浏览器会对服务器发出request请求,
ex: get HTTP:www.google.tw 网址,在应用层HTTP发送,
之后服务器在TCP传输层传输封包给浏览器,传输完成之后服务器会传送
HTTP 200 OK状态码,如果还有其他档案例如CSS档或是图档,
会再发出一次request请求,程序如上,等档案都传输完成结束的时候,会进行
TCP四次挥手中止连线。
2.前端该理解的 TCP/IP 观念
https://yakimhsu.com/project/project_w4_Network_TCP_IP.html
TCP/IP有四层,分别是应用层,HTTP就算是应用层,
传输层,TCP、UDP就算是传输层,
网络层,IP就算是网络层,
网络连结层,Ethernat以太网就算是网络连结层。
3.在与后端介接 API 时,如何透过 TCP/IP 、wireshark、Fiddler 来观察是否 ok
可以先用终端机ping网址,可以获取该网址的IP,使用ip.src=="IP位置" or
ip.dst=="IP位置"筛选TCP封包,此时wireshark或是Fiddler可以看到各个封包的资讯
包括是否传输成功200 OK,和观察封包大小,如果最后有四次挥手那就算OK了
4.输入浏览器网址后,过程中发生了哪些事?
https://cythilya.github.io/2018/11/26/what-happens-when-you-type-an-url-in-the-browser-and-press-enter/
当使用者在浏览器网址列输入网址并送出后,browser process 的 ui thread 接收到使
用者输入的资料,ui thread 会要求发出网络请求,此时 network thread 开始执行
DNS lookup、建立连线,而当连线成功、资料传输完毕后,network thread 通知 ui
thread 资料已准备好,browser process 利用 IPC 将资料传递给 render process 以进
行页面渲染,渲染完毕即可让使用者看到画面。
当使用者在浏览器网址列键入网址,浏览器的 ui thread 接收到输入的资料,network
thread 便开始将这网址字串进行解析以便下载资源,而这个网址字串会解析成以下部份
…
协定类型:http、https、ftp 等。
服务器位址:这里可以放域名(domain name)或 IP address,若为域名就需要做 DNS
解析,例如:www.sample.com。
埠号:默认为 80,若为默认就不用写出来。
资源层级 UNIX 档案路径,例如:/main/page/。
档案名:index.html。
查询(query string):以问号 ? 开始,并以 & 分隔,例如:?keyword=abc&happy=abc
。
片段 ID(fragment):以 hash 开头,常用于定位,例如:#heading-1
URL 解析完毕后,若服务器位址的地方是放置域名而非 IP address 就需要做 DNS 解析
以得到 IP,接着再建立 TCP/IP 连线来传输档案。备注,由前面所述可知,网络连线是
single thread 的,一个请求即使用一个 network thread。
TCP/IP(Transmission Control Protocol/Internet Protocol)是网络上的一种通讯协
定,用于在不同设备或环境间传送讯息。另,HTTPS 是指将 HTTP 使用 SSL 加密后再利
用 TCP 发送,加强安全性。TCP/IP 会经由三次握手建立连线,再经由四次挥手断开连线
。
客户端发送请求后,服务器收到请求会进行处理并回应,而 HTTP 请求或回应讯息的结构
是:方法、通用标头、请求或回应标头、请求或回应身体。
客户端(意即浏览器的 renderer process)收到从服务器的回应后后会开始做解析和渲
染,这部份的流程为
=======================我坦白说以上我都看不太懂===============================
当你输入网址后,浏览器会进行以下一系列流程,透过域名服务器(Domain Name
Server, DNS) ,去进行域名解析,查找域名是对应哪个 IP 地址,最后从该 IP 地址获
取网页等网络资源。
当域名解析成功,找到相关 IP 地址,接下来到Web服务器处理请求,
当 web serve r接收到一个 HTTP 请求 (request),便会进行一个网站处理流程,最后产
生一个 HTML 的响应(response)给浏览器。
最后服务器将处理好的HTML,交给浏览器处理,最后显示在你的屏幕上
接下来就是浏览器进行处理, 服务器将处理好的HTML字符串交给浏览器后被一句句读取
解析。过程主要分为加载,解析,渲染。
=====================以上我看得懂但是又觉得太简化了==========================
补充:
IPV4与IPV6的差别:
这两个世代的网络协定,最明显的差异就在于其提供的网络位址数量。IPv4的位址格式是
采用32位元长度,位址能提供2的32次方个,换算后约42亿个。虽然IPv4有这么多IP位址
,但依旧在2011年的2月3日消耗殆尽。
而IPv6的位址格式则采用128位元长度,其位址能提供2的128次方个。它所能提供的IP位
址,远远超过IPv4的数量,预估能让地球上每个人都分到100万个IP位址,或是地球上每
平方公尺面积皆提供1000多个IP位址。简而言之,转换到IPv6后,IP位址的数量多到几乎
不可能用尽。