Java面试基础知识 网络基础知识 笔记1
如有侵权 立即删除
1-1 导学必看
2-1 网络基础知识讲解
2019年8月24日
19:45
为什么要学习网络呢?
底层都帮我们实现好了的
但是一旦遇到特殊情况 例如程序为什么会变慢 是因为网络的原因还是其它的原因 数据包有没有丢失。
为什么会出现大量的链接丢失 因此还是很有必要学习网络知识的 网络知识更偏向于理论
七层协议模型
从底向上讲解
第一层
机器a 向机器b 发送比特流 机器b需要收到比特流 这就是物理层
物理层主要定义了 物理设备的标准 例如网线的类型 传输介质的类型 主要作用是传输比特流 就是0101二进制数据 将其转换成电流强弱来进行传输
网卡就是工作在这层里面的
第二层
在传输比特流的过程中 会产生错传 数据传输不完整的情况 因此数据链路层定义了如何格式化数据 还提供了错误检测和纠正 以确保数据传输的可靠性 将比特数据转成了帧 其中交换机工作在这一层里面
第三层
随着网络节点的不断增加 点对点通信的时候 是需要经过多个节点的 那么如何选择最佳路径 这就是网络层做的事了
主要作用是将 网络地址翻译成对应的物理地址 并决定如何将数据从发送方路由到接收方 路由器属于网络层 此层的数据叫做数据包 ip协议
第四层
随着网络需求的进一步扩大 通信过程中需要发送大量的数据 可能需要很长时间 而网络在通信的过程中 会中断很多次 所以将这些数据进行切分 切分成segment进行发送 其中一个段落丢失了 该怎么办 需不需要重新传 这个就是传输层做的事 1500的数据包 进行分割
两个传输协议 tcp/udp
第五层
到了第四层我们已经保证 给正确的计算机发送数据 但是给用户的体验很不好 每次都会调用tcp协议去打包数据 然后再调用ip协议去找路由吗
所以我们需要建立一个可以自动收发包 自动寻址的功能
会话层的作用就是建立和管理 应用程序之间的通讯
第六层
现在已经保证 可以自动收发包和自动寻找的功能 现在要linux向window发送数据 两个系统语法不同 于是需要表示层 帮我们解决不同系统之间通信语法的问题
第七层 应用层
虽然发送方知道 自己发送的是什么东西 转成字节数组有多长 但是接收方不知道 所以应用层的网络协议诞生了 发送方和接收方都必须使用固定长度的消息头 消息头里面必须记录 消息长度等信息 就是请求体 请求头那些信息 该层最主要的是http协议
osi只是规定了 一种参考模型 具体实现是 tcp/Ip
2-2 TCP的三次握手
2019年8月24日
21:31
老师这里是直接在网络上抓包 来分析三次握手的过程
防止 seq乱掉 tcp会用这个序号来拼接数据 客户端和服务端 都需要拿到对方的seq
2-4 TCP的四次挥手
2019年8月24日
22:04
请看上图
利用这句话 去检查是否有大量的close_wait
2-5 TCP和UDP的区别
2019年8月24日
22:41
比起tcp 结构简化了很多
checkSum奇偶校验值
2-6 TCP的滑窗
2019年8月25日
10:57
左边是tcp发送端的缓冲区
2-7 HTTP相关
2019年8月25日
11:18
这里的无连接是每次链接只处理一个请求 服务器处理完了用户的请求 并收到用户的应答之后就会断开链接
现在的http默认使用长连接 就是默认等待一定时间后才会断开链接 keep-alive
现在都是以http1.1 为准 因为2.0版本 跨度太大 而且现在的1.1就已经满足目前的需求 2.0升级的成本太大了
如图
响应报文
幂等性 对数据库的一次操作或者多次操作的结果是一致的
安全性 没有改变数据的操作 因为get方式一般都是查询
post请求是作用在上一级的url上的 则每一次请求 都会添加一份新资源
2-9 HTTP和HTTPS的区别
2019年8月25日
12:48
在http中 即使是post请求 数据也都是明文传输 及其不安全
因此我们需要用到ssl
在三次握手中进行加密
2-10 socket相关
2019年8月25日
15:17
利用ip+tcp 来唯一标识网络中的一个进程
TCP server
客户端
UDP
2-11 网络知识总结
2019年8月25日
15:30
我们还需要知道ipv4 和ipv6的区别 还有各自的定义 这里没有讲