文章目录
网络模型
OSI 参考模型
7 | 应用层(Application) |
---|---|
6 | 表示层(Presentation) |
5 | 会话层(Session) |
4 | 运输层(Transport) |
3 | 网络层(Network) |
2 | 数据链路层(Data Link) |
1 | 物理层(Physical) |
因为太过复杂, 不常用
TCP/IP 协议
4 | 应用层(Application) |
---|---|
3 | 运输层(Transport) |
2 | 网际层(Internet) |
1 | 网络接口层(Network Access) |
通常学习, 研究采用
5 | 应用层 |
---|---|
4 | 运输层 |
3 | 网络层 |
2 | 数据链路层 |
1 | 物理层 |
基础知识
应用层就是指一些应用程序可能会发出去的请求
5 | 应用层 | FTP, HTTP, SMTP, DNS, , TFTP, DHCP | 报文 |
---|---|---|---|
4 | 运输层 | TCP, UDP | 段(Segments) |
3 | 网络层 | IP | 包(Packet) |
2 | 数据链路层 | MAC地址 | 帧(Frames) |
1 | 物理层 | 比特流(Bits) |
所有的请求一般分为两种: TCP请求和UDP请求, TCP请求和UDP请求对比:
TCP | UDP | |
---|---|---|
连接性 | 面向连接 | 无连接 |
通信数量 | 每一个连接只能是一对一通信 | 支持一对一, 一对多, 多对一, 多对多 |
可靠性 | 可靠传输, 不丢包 | 不可靠传输, 尽最大努力交付, 可能丢包 |
首部占用空间 | 大 | 小 |
传输速率 | 慢 | 快 |
资源消耗 | 大 | 小 |
常见协议 | FTP, HTTP, HTTPS, DNS | DNS, DHCP |
应用场景 | 浏览器, 文件传输, 邮件发送 | 音视频通话, 直播 |
TCP首部
UDP首部
HTTP 请求过程
请求从客户端的应用层发出, 通过应用层把数据包装成HTTP请求
然后经过运输层会在请求的头部加一个TCP首部或者UDP首部(因为HTTP请求属于TCP请求所以加TCP首部), 还有源端口号和目标端口号.(用来指定请求发给服务器的哪个程序, 每个程序都会确定一个端口号)
然后经过网络层又会在头部加一段数据, 比如: 客户端的IP和服务器的IP(定位到服务器的位置)
然后经过数据链路层又会在头部和尾部加一些东西, 例如:MAC地址(网卡的唯一地址)
然后经过物理层又会在头部加一些东西, 例如: 二进制流相关的信息, 转为0101比特流
经过路由器或者交换机
路由器只有三层, 物理层, 数据链路层, 网络层,
因为路由器的作用是根据IP地址来寻路.(看一下哪一条路比较短), 所以路由器只需要知道IP地址就可以了, 不需要知道你请求的数据是什么.
传到服务器,
然后经过物理层拆掉物理层包装的东西,
然后经过数据链路层拆掉数据链路层包装的东西,
然后经过网络层拆掉网络层包装的东西,
然后经过运输层拆掉运输层包装的东西,
最后还原出了应用层要的东西
互联网上的每一台设备都有自己的IP地址, IP地址就是用来标识互联网上这一台设备的. 通过IP地址找到这一台设备.
TCP - 三次握手 - 建立连接
TCP - 四次挥手 - 释放连接
DNS服务器
域名解析: 找出域名对应的IP地址是什么.
例如: 在浏览器输入www.baidu.com 是怎么知道百度服务器的IP地址的呢?
通过DNS服务器找到的, 而且一旦DNS服务器知道某个域名对应的IP地址, 会把这个IP地址缓存下来.