本文主要讲述以下内容:
TCP 面试题
IP 初步了解
端口的理解
服务器与客户端的沟通流程
一.TCP 传输控制协议(Transmission Control Protocol)
简答:TCP 可靠(我发一个请求,成功不成功我是知道的,比如访问谷歌,如果成功,我就显示搜索框页面 ,如果失败,我就显示一个错误页面)、面向连接、相对 UDP 较慢;UDP 不可靠,不面向连接、相对 TCP 较快。搞定。
简答:每次建立连接前,客户端和服务端之前都要先进行三次对话才开始正式传输内容,三次对话大概是这样的:
1. 客户端:我要连接你了,可以吗
2.服务端:嗯,我准备好了,连接我吧
3. 客户端:那我连接你咯。
4. 开始后面步骤
二.IP网络协议(Internet Protocol)
1.从电信买来宽带,电信为你提供DNS服务,接着你买了一个路由器提供wifi,只要路由器连上电信的服务器,路由器就会有一个外网IP,这是你在互联网的地址
2.同时路由器在你家为你创建了一个内网,它为自己分配一个内网IP,并为每台设备分配不同的IP,IP格式一般为192.168.xxx.xxx,
3.所谓IP协议就是为计算机网络相互连接进行通信而设计的协议。内网之间可以互相访问,外网之间可以互相访问,但是内网必须通过路由器才能访问外网,因为路由器同时具有内网IP和外网IP,所以路由器充当一个网关的作用,必不可少。
4.每台设备都有本地IP地址为127.0.0.1 ,永远表示设备自己,
5.host可以设置任何域名对应的IP, hosts 文件里会有一行127.0.0.1 localhost,意思就是 localhost 指向 127.0.0.1,所以 localhost 也表示设备自己
三.端口Port
如果想要访问一个设备(前提是你使用的是 TCP 或 UDP 协议),只指定IP 还不行,还必须指定端口,比如指定 80 使用HTTP服务,指定443使用HTTPS服务,一台设备共有 65535(2的16次方减1)个端口,每个端口提供一种服务。
-
0 到 1023(2的10次方减1)号端口是留给系统使用的,你只有拥有了管理员权限后(以管理员身份打开git bash),才能使用这 1024 个端口。
-
其他端口可以给普通用户使用
-
如果一个端口正在提供服务,也就是被占用了,那么就不能再使用这个端口。除非你先停掉正在占用这个端口的服务。以后会经常遇到这个问题。
使用 HTTP 协议访问另一个 IP 时,必须同时提供 IP 和端口号,缺一不可。
浏览器默认80端口(http),所以一般在网页上http请求输入地址可以不指定端口号
四.服务器与浏览器的沟通过程
服务器:一台电脑就是一台服务器,并且要联网,CPU要高,内存要大,是一个没有显示器的主机,使用服务器需用SSH远程登录进行连接。
1.当浏览器输入url,缺协议,给你加http,缺端口,给你80,缺路径,给你一个/,凑成一个完整的url,
2.浏览器向 DNS服务发送询问得到服务器IP地址,
3.浏览器向这个IP地址发起HTTP请求,
4.服务器接受到请求,分析http请求报文返回http响应报文,浏览器下载返回报文中的内容
5.如果文件是html,浏览器进行解析html,遇到静态文件img,css,js,依次发送请求,浏览器继续下载,最终将页面呈现给用户
HTTP 路径不是文件路径!!!/xxx.html 不一定对应 xxx.html 文件,文件格式由http头的Content-type 决定,中文解析错误是因为没有使用编码方式,node添加请求头如下:response.setHeader('Content-Type', 'text/html; charset=utf-8')
END!