计算机网络常见知识

7 篇文章 0 订阅

一、网络模型
二、一次完整的HTTP请求过程

从浏览器中输入网址到呈现页面发生了什么

三、长连接讲解

一、网络模型
首先 网络主要分成四层,从高到低分别是:应用层,传输层,网络层,数据链路层。
【TCP/IP分层模型】
分层的好处:解耦,在每个层次内部能够自由改动。

应用层:http,ftp协议
传输层:TCP和UDP协议
网络层:IP协议
数据链路层:为传输的数据加入一个以太网协议头,进行CRC编码。
这里写图片描述
OSI参考模型注重“通信协议必要的功能是什么”,TCP/IP更强调“在计算机上实现协议应该开发哪种程序”
【OSI】中:
物理层:网线
数据链路层:网卡,通常还需要驱动程序支持
网络层:IP协议
传输层:TCP UDP
应用层:浏览器与服务器之间的通信协议HTTP协议,传输数据的主要格式是HTML,WWW中的HTTP属于OSI应用层的协议,HTML属于表示层的协议。
电子邮件 SMTP 只能发送文本格式
MIME可以发送声音,图像。属于表示层。

利用TCP/IP进行网络通信时,会通过分层顺序与对方进行通信。发送端从应用层往下走,接收端从往应用层上走。
一、客户端在应用层发出HTTP请求
二、在传输层(TCP协议)把从应用层接收到的HTTP请求报文分割,打上标记序号和端口发给网络层
三、在网络层(IP),增加作为通信目的地的MAC地址后转发到链路层
四、接收端的服务器在链路层收到数据,往上发送,直到应用层。
如下图所示
这里写图片描述

IP协议要确保把数据包传送到对方手中,需要满足两个重要条件是IP地址和MAC地址。

TCP协议为了能鞥容易传送大数据才把数据分割,并且它能确认数据是否到达对方。
采用三次握手

二、一次完整的HTTP请求过程

域名解析 --> 
发起TCP的3次握手 --> 
建立TCP连接后发起http请求 --> 
服务器响应http请求,浏览器得到html代码 --> 
浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) --> 
浏览器对页面进行渲染呈现给用户

负责域名解析的DNS服务
DNS服务位于应用层,提供域名到IP地址之间的解析服务。
这里写图片描述

参考文献:
竹下隆史. 图解TCP/IP[M]. 人民邮电出版社, 2013.
上野·宣 著, 于均良. 图解HTTP[M]. 人民邮电出版社, 2014.

二、长连接讲解
1、基于http协议的长连接
在HTTP1.0和HTTP1.1协议中都有对长连接的支持。其中HTTP1.0需要在request中增加”Connection: keep-alive“ header才能够支持,而HTTP1.1默认支持.
http1.0请求与服务端的交互过程:
客户端发出带有包含一个header:”Connection: keep-alive“的请求
服务端接收到这个请求后,根据http1.0和”Connection: keep-alive“判断出这是一个长连接,就会在response的header中也增加”Connection: keep-alive“,同是不会关闭已建立的tcp连接.
客户端收到服务端的response后,发现其中包含”Connection: keep-alive“,就认为是一个长连接,不关闭这个连接。并用该连接再发送request.转到a)
2、发心跳包。每隔几秒就发一个数据包过去

Java面试中常问的计算机网络方面问题
https://mp.weixin.qq.com/s/jeFRI3qMF8suWizEYGKyvw

Java NIO:浅析I/O模型
https://mp.weixin.qq.com/s/N2oxGd1xeFHT1lN7LkWCkQ

老曹眼中的网络编程基础
https://mp.weixin.qq.com/s/XXMz5uAFSsPdg38bth2jAA

七层模型(OSI,Open System Interconnection参考模型),是参考是国际标准化组织制定的一个用于计算机或通信系统间互联的标准体系。它是一个七层抽象的模型,不仅包括一系列抽象的术语和概念,也包括具体的协议。 经典的描述如下:

简述每一层的含义:

物理层(Physical Layer):建立、维护、断开物理连接。

数据链路层 (Link):逻辑连接、进行硬件地址寻址、差错校验等。

网络层 (Network):进行逻辑寻址,实现不同网络之间的路径选择。

传输层 (Transport):定义传输数据的协议端口号,及流控和差错校验。

会话层(Session Layer):建立、管理、终止会话。

表示层(Presentation Layer):数据的表示、安全、压缩。

应用层 (Application):网络服务与最终用户的一个接口

每一层利用下一层提供的服务与对等层通信,每一层使用自己的协议。了解了这些,然并卵。但是,这一模型确实是绝大多数网络编程的基础,作为抽象类存在的,而TCP/IP协议栈只是这一模型的一个具体实现。

以上引用自https://h2pl.github.io/2018/05/25/Javanet/
我总结如下:
对于七层OSI模型来说
物理层:
网络连接或者无线网络将机器连接到局域网中,建立比特流的原始传输通道。
数据链路层:
通过网卡建立数据链路,如何建立,利用的是Mac地址。比如A、B、C、D、E都在局域网中,A和B如何在物理连接互相找到,在以太网中广播传输,目标Mac和自己的Mac地址相同的接收,A找到B的网卡。
网络层:
IP协议,因为连接的不一定是局域网的机器,大多数情况下是在不同的局域网中,中间隔着多个路由器。ip地址就是逻辑地址,用于上层通信间的协议。相当于Mac地址是某个小区具体单元,ip地址是快递到该地址途径的中间地方,到达某个中间节点后会得到去下个节点的指示。
传输层:tcp协议,建立可靠连接
tcp/ip中的应用层:HTTP协议。应用层中又分为OSI中的会话层(Session),表示层(数据压缩),应用层(和用户交互的应用,get和post请求)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值