1 Star 0 Fork 206

尼古拉斯你大爷/Java高级开发工程师面试笔记

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
part1-网络协议.txt 6.29 KB
一键复制 编辑 原始数据 按行查看 历史
猪哥 提交于 2018-04-26 20:51 . 恢复上次误删除
1,tcp/ip
#tcp/ip协议族:计算机与网络设备之间互相通信,双方就必须基于同样的方法。比如:如何发现通信目标、由谁发起通信、使用什么语言通信、怎么结束通信都需要事先确定,
##所有这些都需要一种规则,这就是协议。协议中存在多种的内容;从电缆的规格到ip地址的选定方法,寻找异地用户的方法,建立通信的顺序,以及web页面显示需要处理的步骤等等
##像这样把与互联网相关联的协议集合起来统称为tcp/ip
#tcp/ip的分层:tcp/ip很重要的一个特点就是分层。按照层次分为以下四层:应用层,传输层,网络层和数据链路层
#分层的好处:如果互联网只由一个协议统筹,那么某一地方出问题,整体都会出现问题,无法使用;分层后,只需替换出现问题的或者需要修改的即可,而且分层后针对具体的设计也变得更为简单
#应用层:体系的最高层,应用进程间通信交互的规则,tcp/ip协议族预存了各类通用的应用服务,比如:
#ftp:文件传输协议
#dns:域名系统协议
#http:万维网应用协议
#smtp:电子邮件协议
#websocket:websocket协议
#以上几种是常用的几种,还有很多其他的协议,感兴趣的可以找找其他专业的书籍看看
#传输层:提供处于网络连接中的两台计算机间的数据传输,其中包括tcp和udp两种性质不同的协议
#tcp:传输控制协议,传输的单位为报文段,提供面向连接的,可靠的数据传输服务
#数据传输中为了传输方便,会将大块数据分割成报文段,而tcp协议能确认数据最终是否传送给对方为了准确传输,传输中采用了三次握手策略(这种手段可以理解为多次确认,来确保数据传输的可靠性)
#udp:传输单位为用户数据报,它是尽最大努力的提供数据传输服务,不保证可靠性
#网络层:又名网络连接层
#用来处理在网络上流动的数据包(封装)。数据包是网络传输的最小数据单位。该层规定了通过怎样的路径到达对方计算机并把数据包传给对方
#链路层:又名数据链路层,网络接口层
#处理连接网络的硬件部分。比如控制操作系统、硬件的驱动、网络适配器、光钎等
#数据的封装:用户端发送一个请求,从应用层开始,一直到链路层,每一层都会被打上该层所属的首部信息;反之,接收端在层与层之间传输时,每经过一层会去掉该层的首部信息,这种做法叫做封装
2,http/https
#http协议:http协议用于客户端和服务器之间的通信,请求访问资源的一方称为客户端,而提供资源响应的一方称为服务器端。
#请求体的构成:
#请求行:post /index.html HTTP/1.1
#请求方法:get,post,patch,put,delete,head等
#请求URL:资源定位
#http协议及版本:http 0.9、http 1.0、http 1.1、http 2.0
#请求头(Request Header)
#accept:请求报文可通过一个“Accept”报文头属性告诉服务端 客户端接受什么类型的响应。Accept: text/plain
#Accept-Charset:可接受的字符集 Accept-Charset: utf-8
#cookie:用户存取用户的session
#Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。
#User-Agent:浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用
#Host:初始URL中的主机和端口。
#Connection:表示是否需要持久连接。如果Servlet看到这里的值为“Keep-Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接)
#请求正文
#请求头和请求正文之间是一个空行,它表示请求头已经结束,接下来的是请求正文。请求正文中可以包含客户提交的查询字符串信息
#username=cmc&password=1234或者{'username':'cmc','password':'1234'}等
#响应体构成:
#状态行:HTTP/1.1 200 OK
#http协议及版本:http 0.9、http 1.0、http 1.1、http 2.0
#响应状态码:
#1xx 消息,一般是告诉客户端,请求已经收到了,正在处理,别急...
#2xx 处理成功,一般表示:请求收悉、我明白你要的、请求已受理、已经处理完成等信息.
#3xx 重定向到其它地方。它让客户端再发起一个请求以完成整个处理。
#4xx 处理发生错误,责任在客户端,如客户端的请求一个不存在的资源,客户端未被授权,禁止访问等。
#5xx 处理发生错误,责任在服务端,如服务端抛出异常,路由出错,HTTP版本不支持等。
#响应头:
#Access-Control-Allow-Origin:指定哪些网站可以跨域源资源共享,Access-Control-Allow-Origin: *
#Set-Cookie:服务端设置客户端HTTP cookie,Set-Cookie: UserID=itbilu; Max-Age=3600; Version=1
#Expires:指定一个日期/时间,超过该时间则认为此回应已经过期,Expires: Thu, 01 Dec 1994 16:00:00 GMT
#Server:服务器的名称 Server: nginx/1.6.3
#Content-Encoding:响应资源所使用的编码类型。 Content-Encoding: gzip
#Content-Language:响就内容所使用的语言 Content-Language: zh-cn
#Content-Length:响应消息体的长度,用8进制字节表示
#响应正文:
#服务器返回的内容,网页,图片,等等
#https协议:
#http缺点:
#通信使用明文(不加密),内容可能会被窃听
#不验证通信方的身份,因此可能遭遇伪装
#无法证明报文的完整性,所以有可能已被篡改
#某些特定web服务器和特定web浏览器存在安全漏洞
#https原理详解(裂墙推荐):http://blog.csdn.net/u014044812/article/details/79571927
3,websocket
#WebSocket protocol 是HTML5一种新的协议。它实现了浏览器与服务器全双工通信(full-duplex)。一开始的握手需要借助HTTP请求完成,连接以后通过帧来通信。
#维基百科:https://zh.wikipedia.org/wiki/WebSocket
#推荐博文:https://www.cnblogs.com/lizhenghn/p/5155933.html
##https://www.zhihu.com/question/20215561
4,HTTP/2
#维基百科:https://zh.wikipedia.org/wiki/HTTP/2
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Java
1
https://gitee.com/tian0915/java_senior_development_engineer_interview_notes.git
git@gitee.com:tian0915/java_senior_development_engineer_interview_notes.git
tian0915
java_senior_development_engineer_interview_notes
Java高级开发工程师面试笔记
master

搜索帮助

0d507c66 1850385 C8b1a773 1850385