TCP/IP

  1. HTTP协议的底层其实是由TCP协议和IP协议(简称TCP/IP)构建的。
  2. TCP (传输控制协议)Transmission Control Protocol ,就是怎么传输
  3. IP(网络协议)Internet Protocol,就是如何联网,如果没有IP协议的话,就没办法联网
  4. TCP与UDP的区别:TCP是可靠的,面向连接的,相对于UDP较慢。UDP是不可靠,不面向连接,相对较快。
可靠:意思就是我发一个请求成功与否我是知道的。
比如访问谷歌,会出现一个错误页面,也就是说请求未成功。(TCP就类似于将一块石头扔进了水塘,听得见声音,UDP类似于将石头扔进了草垛,没有声音,没有反响)
面向连接:TCP必须发起一个连接,连接的这一端是我,另一端是谷歌的服务器,
像是一条线贯穿着我的浏览器和谷歌的服务器。而UDP是没有这条线的
复制代码
  1. http控制如何书写传输内容,TCP控制如何传输,IP控制如何联网

  2. TCP的三次握手

    每次简历连接前,客户端与服务端之间都要先进行三次对话才开始
    正式传输内容,三次对话大概是这样的:
    1.客户端:我要连接你了,可以吗?
    2.服务器: 嗯,我准备好了,连接吧
    3.客户端:好的,那我要连接你咯
    4. 开始后面的步骤(传http协议 内容等等)
    
    
    复制代码

    为什么要进行三次握手呢?是为了确认客户端,服务端 这两方 都可以接收收据和发送请求

  3. IP

1. 你从电信那里买来带宽,一年一千多。
2. 电信为你提供 DNS 服务。(比如告诉你baidu.com的IP是多少,没有IP我们什么都干不了)
3. 你买了一个路由器,然后用电脑和手机分别连接路由器广播出来的无线 WIFI。
4. 只要路由器连上电信的服务器,那么路由器就会有一个「外网 IP」,比如「14.17.32.211」就是一个外网 IP。这就是你在互联网中的地址。
5. 但是如果你重启路由器,那么你很有「可能」被重新分配一个「外网 IP」,也就是说 你的路由器没有「固定的外网 IP」

6. 你可以花每年几千块钱租用一个「固定的外网 IP」,但是显然不会这么浪费钱。像腾讯、阿里这样的大公司租用了很多外网 IP,这样才能对我们提供稳定的服务。

7. 但是有个问题,你的路由器的外网 IP 如果是14.17.32.211,那么你的手机和电脑的 IP 又是什么呢?答案是「内网 IP」

8.路由器会在你家里创建一个内网,内网中的设备使用内网 IP,一般来说这个 IP 的格式都是 192.168.xxx.xxx。
一般路由会给自己分配一个好记的内网 IP,如 192.168.1.1
然后路由会给每一个内网中的设备分配一个不同的内网 IP,如电脑是 192.168.1.2,手机是 192.168.1.3,以此类推。

9. 现在路由器有两个 IP,一个外网 IP(14.17.32.211)和一个内网 IP(192.168.1.1)

10. 内网中的设备可以互相访问(比如你可以用电脑或手机进入 http://192.168.1.1 来查看你的路由器,因为路由器中内置了一个Http服务器来进行配置),但是不能直接访问外网,内网设备想要访问外网,就必须经过路由器中转。
外网中的设备可以互相访问(比如 qq.com 可以把首页发送给你的路由器,你的路由器有外网 IP),但是外网中的设备无法访问你的内网设备(这很好理解,内网是一个封闭的网络,外人进不来,所以实际上 qq.com 无法直接把首页放送给你的电脑和手机)
,

11. 问题来了,那 qq.com 是怎么把首页发送到我的手机上的呢?答案是通过路由器来中转。
路由器接收到 qq.com 的页面后,把页面发送给你的电脑或手机。

12. 路由器知道如何给这些信息指路,路由器就是一个指路人,这就是「路由」两个字的来历。
路,就是「必由之路」中的路。由,就是「必由之路」中的由(由是经过、缘由的意思)。所有的信息都要经过路由器,然后被指向一条它该去的路。
也就是说内网和外网就像两个隔绝的空间,无法互通,唯一的联通点就是路由器(因为路由器既有外网 IP 也有内网 IP),所以路由器有时候也被叫做「网关」,这个「关」是「一夫当关,万夫莫开」的「关」。

13. 如果路由器到电信的连接中断了,那么内网中所有的设备也就无法上网了。(这很好理解,相当于唯一一条出去的路断了)
除了内网 IP 和外网 IP,

14. 还有两个特别特殊的 IP,就是本地 IP:127.0.0.1。本地 IP 永远表示设备自己。不信你可以 ping 127.0.0.1 一下,会发现只需要 0.01 ms 就得到了响应(你 ping qq.com 需要几十毫秒才得到响应)
默认情况下,hosts 文件里会有一行127.0.0.1 localhost,意思就是 localhost 指向 127.0.0.1,所以 localhost 也表示设备自己。不信你 ping localhost 试试,会发现实际上是在 ping 127.0.0.1

15. 还有一个特别特殊的 IP:0.0.0.0,它不表示任何设备。这个 IP 不同的地方含义不同,以后我们会用到,用到的时候再说意思。

16. 端口
你想要访问一个设备(前提是你使用的是 TCP 或 UDP 协议。还记得吗,HTTP 就使用了 TCP),只指定 IP 是不够的,还必须指定端口(Port)。

端口其实就是一个编号,并不是一种硬件。

一个服务器(硬件)不一定只提供一种服务,比如一个服务器既提供 HTTP 服务,又提供 FTP 服务,还提供 SMTP 服务(邮件服务),那么只用一个 IP 是无法告诉服务器你想要使用哪种服务。

所以这里有一个重要的原则:一个端口对应一个服务。

比如

要提供 HTTP 服务你最好使用 80 端口(能不能使用别的端口?可以,不过不建议你违反约定)
要提供 HTTPS 服务你最好使用 443 端口(能不能使用别的端口?可以,不过不建议你违反约定)
要提供 FTP 服务你最好使用 21 端口(能不能使用别的端口?可以,不过不建议你违反约定)
问题1:我怎么知道应该使用什么端口?
维基百科 把 0 到 1023 号端口对应的服务都告诉你了,点进去看看吧。

问题2:一共由多少端口?
每个机器一共有 65535(2的16次方减1)个端口(这是协议规定的)。不过这些端口的使用由一些规定

0 到 1023(2的10次方减1)号端口是留给系统使用的,你只有拥有了管理员权限后,才能使用这 1024 个端口。
其他端口可以给普通用户使用
如果一个端口正在提供服务,也就是被占用了,那么就不能再使用这个端口。除非你先停掉正在占用这个端口的服务。以后你们会经常遇到这个问题。
总结
上面都是 TCP/IP 相关的知识,如果你记不住,就记住下面这句话:

使用 HTTP 协议访问另一个 IP 时,比如同时提供 IP 和端口号,缺一不可。

那么问题来了

我访问 http://qq.com 时并没有提供端口号,为什么我依然可以访问

!!答:因为浏览器帮你加了默认端口号 80。
复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值