PHP面试整理(一)计算机网络基础

即将毕业的PHP小学生,在网上看了很多面试资料和相关东西,在这里记录下来,有些地方可能会涉及到别人的原创,但是当时做笔记时候没有添加,如果冒犯,请告诉我,我会补充上注明来源。(学习路上有很多错误,和忽略的地方,希望大家能多多指正,谢谢!!!)

 

一、计算机网络基础

1.TCP/IP三次握手(建立TCP连接)

  • 服务器进程先创建传输控制块 TCB,并处于监听状态,等待客户端的连接请求
  • 客户端创建传输控制块 TCB,并向服务器发出连接请求报文段
  • 服务器收到连接请求报文段后,如同意建立连接,则发送确认报文段
  • 客户端进程收到服务器的确认报文段后,立即回复确认报文段,并进入已建立连接状态
  • 服务器收到确认报文段之后,也进入已建立连接状态

  首先是服务器处于LISTEN(监听状态),等待客户端的连接请求。

在网上看过的建立连接这一部分,很清晰的一种解释方法就是:
    客户端:我要开始了

    服务端:好的

       客户端:那我真的开始了

为什么是三次握手,而不是两次?

防止失效的连接请求到达服务器,让服务器打开错误连接。

客户端发送的连接请求如果在网络中滞留,那么就会隔很长一段时间才能收到服务器端发回的连接确认。客户端等待一个超时重传时间之后,就会重新请求连接。但是这个滞留的连接请求最后还是会到达服务器,如果不进行三次握手,那么服务器就会打开两个连接。如果有第三次握手,客户端就是忽略服务器之后发送的对滞留请求的连接确认,不进行第三次握手,因此就不会再次打开连接。

2.TCP/IP四次挥手(TCP连接的释放)

 

  • 客户端应用进程发出连接释放报文段,并停止再发送数据,进入 FIN-WAIT-1(终止等待1)状态,等待服务器确认
  • 服务器收到连接释放报文段后即发出确认,进入 CLOSE-WAIT(关闭等待)状态,服务器若发送数据,客户端扔要接收
  • 客户端收到来自服务器的确认后,进入 FIN-WAIT-2(终止等待2)状态,等待服务器发出连接释放报文段
  • 服务器没有要发送的数据,发出连接释放报文段,进入 LAST-ACK(最后确认)状态,等待客户端确认
  • 客户端收到连接释放报文段后,发出确认,进入 TIME-WAIT(时间等待)状态,经过时间等待计时器设置的时间 2MSL 后,进入 CLOSED(关闭) 状态
  • 服务器收到客户端报文段后,进入 CLOSED 状态

很清晰的一种解释方法:
    客户端:我要结束

    服务端:好的,等我把数据发完

       服务端:我发完了

       客户端:那我真结束了

为什么要四次挥手?

客户端发送了FIN连接释放报文之后,服务器收到了这个报文,就进入了CLOSE-WAIT状态。这个状态是为了让服务器端发送还未传完的数据,传送完毕之后,服务器会发送FIN连接释放报文。

TIME_WAIT是什么,为什么必须等待2mls?

TIME_WAIT是一种TCP状态。等待2mls可以保证客户端最后一个报文段能够到达服务器,如果未到达,服务器则会超时重传连接释放报文段,使得客户端、服务器都可以正常进入到CLOSE(关闭)状态。

三次握手和四次挥手,我觉得挺多都会问的,但是我所了解的,就这样,还需要在去深入了解。

OSI七层:

物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。

一次HTTP请求的过程(web请求过程)

 

  • 输入网址
  • DNS解析
  • 建立TCP连接(三次握手)
  • 客户端发送HTTP请求
  • 服务器处理请求
  • 服务器响应请求(状态码)
  • 浏览器展示HTML
  • 浏览器发送请求获取其他在HTML的资源。

(有的地方不在准确,不够深入细致,欢迎纠正)

状态码分类

状态码 整体范围 已定义范围 含义
1XX 100~199 100-101 信息提示
2XX 200~299 200-206 成功
3XX 300~399 300-305 重定向
4XX 400~499 400-415 客户端错误
5XX 500~599 500-505 服务器错误

常见协议端口

ftp 21
ssh 22
telnet 23
http  80
smtp 25
snmp 161
https 443
…… &

 

常见端口:


200  请求成功                400  告知客户端发送了错误请求

206  部分请求                403  请求被服务器拒绝

301  在请求的链接被移除时使用        404  无法找到请求的URL

302  在请求临时的链接使用          413  请求实体过大

304  资源未被修改可以使用旧资源       500  服务器遇到错误

307  在请求临时的链接使用          502  代理或网关错误

503  无法为请求提供服务           504  代理或网关超时

在做东西时候,碰见过返回413,但是在网上找资料找了下。

我当时修改了nginx.conf中的client_max_body_size;php.ini中的upload_max_filesize(限制PHP处理上传问价你的最大值,此值必须要是postmaxsize)、post_max_size(限制通过POST方法可以接受的信息最大量)

然后重启php和nginx就ok了。

做的这一部分笔记就这样,会记录学习过程相关的部分知识。谢谢!欢迎纠正。

猜你喜欢

转载自www.cnblogs.com/zhaoguofeng/p/11442877.html