基础编程学习快乐每一天
首页
留言
Siddim.com
当前位置:
首页
>
编程知识库
>
后端开发知识
>
一份tcp、http面试指南,常考点都给你了
一份tcp、http面试指南,常考点都给你了
阅读
1
2019-12-25
TCP
要说
http
就绕不开
tcp
,
TCP
协议对应于传输层,而
HTTP
协议对应于应用层,从本质上来说,二者没有可比性。但是,
http
是基于
tcp
协议的。
TCP/IP 协议分层模型
物理层将二进制的
0
和
1
和电压高低,光的闪灭和电波的强弱信号进行转换
链路层代表驱动
网络层
使用
IP
协议,
IP
协议基于
IP
转发分包数据
IP
协议是个不可靠协议,不会重发
IP
协议发送失败会使用
ICMP
协议通知失败
ARP
解析
IP
中的
MAC
地址,
MAC
地址由网卡出厂提供
IP
还隐含链路层的功能,不管双方底层的链路层是啥,都能通信
传输层
TCP
协议面向有连接,能正确处理丢包,传输顺序错乱的问题,但是为了建立与断开连接,需要至少
7
次的发包收包,资源浪费
UDP
面向无连接,不管对方有没有收到,如果要得到通知,需要通过应用层
通用的
TCP
和
UDP
协议
会话层以上分层
TCP
/
IP
分层中,会话层,表示层,应用层集中在一起
网络管理通过
SNMP
协议
划重点了啊(面试最常问的啊)
TCP三次握手和四次挥手?
被问烂了的问题了,这里不详细讲了,
三次握手:
客户端–发送带有
SYN
标志的数据包–一次握手–服务端
服务端–发送带有
SYN
/
ACK
标志的数据包–二次握手–客户端
客户端–发送带有带有
ACK
标志的数据包–三次握手–服务端
四次挥手:
客户端-发送一个
FIN
,用来关闭客户端到服务器的数据传送
服务器-收到这个
FIN
,它发回一个
ACK
,确认序号为收到的序号加
1
。和
SYN
一样,一个
FIN
将占用一个序号
服务器-关闭与客户端的连接,发送一个
FIN
给客户端
客户端-发回
ACK
报文确认,并将确认序号设置为收到序号加
1
还不懂的童鞋,去找别人的文章好好看看!
TCP和UDP的区别?
仔细阅读上面传输层里写的内容,懂了吗?(不懂?不懂背下来啊,混蛋!)
我们微信聊天时候经常会有这种情况。
是不是感同身受,这种情况就是对方用了
TCP
协议来聊天,要经过--在吗?--在--巴拉巴拉,才能成功的传递信息。而如果对方使用
UDP
,则会有事直接说,不管我收没收到。(以后找我请用
UDP
协议,着急直接打电话!)
HTTP
Http
协议是建立在
TCP
协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次
Http
请求。
Http
会通过
TCP
建立起一个到服务器的连接通道,当本次请求需要的数据完毕后,
Http
会立即将
TCP
连接断开,这个过程是很短的。所以
Http
连接是一种短连接,是一种无状态的连接。
所谓的无状态,是指浏览器每次向服务器发起请求的时候,不是通过一个连接,而是每次都建立一个新的连接。如果是一个连接的话,服务器进程中就能保持住这个连接并且在内存中记住一些信息状态。而每次请求结束后,连接就关闭,相关的内容就释放了,所以记不住任何状态,成为无状态连接。
http传输流
发送端在层与层间传输数据时,没经过一层都会被加上首部信息,接收端每经过一层都会删除一条首部
又来划重点了啊
HTTP的英文全称?
开玩笑的,这个显然不是重点,但是不排除有人会去问,还是要知道的:超文本传输协议(
HyperText
Transfer
Protocol
)
状态码?
状态码就那些,常用的记住就行了:
2XX
成功
200
OK
,表示从客户端发来的请求在服务器端被正确处理
204
No
content
,表示请求成功,但响应报文不含实体的主体部分
206
Partial
Content
,进行范围请求
3XX
重定向
301
moved
permanently
,永久性重定向,表示资源已被分配了新的
URL
302
found
,临时性重定向,表示资源临时被分配了新的
URL
303
see
other
,表示资源存在着另一个
URL
,应使用
GET
方法定向获取资源
304
not
modified
,表示服务器允许访问资源,但因发生请求未满足条件的情况
307
temporary
redirect
,临时重定向,和
302
含义相同
4XX
客户端错误
400
bad
request
,请求报文存在语法错误
401
unauthorized
,表示发送的请求需要有通过
HTTP
认证的认证信息
403
forbidden
,表示对请求资源的访问被服务器拒绝
404
not
found
,表示在服务器上没有找到请求的资源
5XX
服务器错误
500
internal
sever
error
,表示服务器端在执行请求时发生了错误
503
service
unavailable
,表明服务器暂时处于超负载或正在停机维护,无法处理请求
HTTP协议格式?
HTTP
的请求和响应的消息协议是一样的,分为三个部分,起始行、消息头和消息体。这三个部分以
CRLF
作为分隔符。最后一个消息头有两个
CRLF
,用来表示消息头部的结束。
HTTP
请求的起始行称为请求行,形如
GET
/
index
.
html
HTTP
/
1
.
1
HTTP
响应的起始行称为状态行,形如
200
ok
消息头部有很多键值对组成,多个键值对之间使用
CRLF
作为分隔符,也可以完全没有键值对。形如
Content
-
Encoding
:
gzip
消息体是一个字符串,字符串的长度是由消息头部的
Content
-
Length
键指定的。如果没有
Content
-
Length
字段说明没有消息体,譬如
GET
请求就是没有消息体的,
POST
请求的消息体一般用来放置表单数据。
GET
请求的响应返回的页面内容也是放在消息体里面的。我们平时调用
API
返回的
JSON
内容都是放在消息体里面的。
HTTP的无状态性?
所谓
HTTP
协议的无状态性是指服务器的协议层无需为不同的请求之间建立任何相关关系,它特指的是协议层的无状态性。但是这并不代表建立在
HTTP
协议之上的应用程序就无法维持状态。
应用层可以通过会话
Session
来跟踪用户请求之间的相关性,服务器会为每个会话对象绑定一个唯一的会话
ID
,浏览器可以将会话
ID
记录在本地缓存
LocalStorage
或者
Cookie
,在后续的请求都带上这个会话
ID
,服务器就可以为每个请求找到相应的会话状态。
输入url到页面加载都发生了什么事情?(最最常问的来了)
输入地址
浏览器查找域名的
IP
地址 这一步包括
DNS
具体的查找过程,包括:浏览器缓存-&
gt
;系统缓存-&
gt
;路由器缓存...
浏览器向
web
服务器发送一个
HTTP
请求
服务器的永久重定向响应(从
http
://
example
.
com
到
http
://
www
.
example
.
com
)
浏览器跟踪重定向地址
服务器处理请求
服务器返回一个
HTTP
响应
浏览器显示
HTML
浏览器发送请求获取嵌入在
HTML
中的资源(如图片、音频、视频、
CSS
、
JS
等等)
浏览器发送异步请求
来源:
juejin
.
im
/
post
/
5ad4094e6fb9a028d7011069
最近三期
【
35
期】谈谈你对
Java
线程之间通信方式的理解
【
36
期】说说 如何停止一个正在运行的线程?
【
37
期】请你详细说说类加载流程,类加载机制及自定义类加载器
? ~
以上数据来源于网络,如有侵权,请联系删除。
上一篇:
请你详细说说类加载流程,类加载机制及自定义类加载器
下一篇:
Mybatis面试18问,你想知道的都在这里了!
评论
(0)
提交
类别
基础编程学习
HTML
PHP
Python
编程知识库
后端开发知识
热门文章
Java并发中的同步容器与并发容器,你了解多少?
Innodb中的事务隔离级别和锁的关系,难倒一半面试者!
SpringBoot + minio实现分片上传、秒传、续传
面试官:你知道消息队列如何保证数据不丢失吗?
JAVA知识 Java8新特性
面试官:谈谈为什么要限流,有哪些限流方案?
说说动态代理与静态代理区别
面试官:思考Tomcat 类加载器为什么要违背双亲委派模型?
boot-admin 基于SpringBoot的后台权限管理系统,可作为脚手架,用于快速搭建项目
SpringBoot+Vue+App+硬件实现智能家居系统项目