计算机网路 互联网中的协议栈
时间:2021-09-04
本文章向大家介绍计算机网路 互联网中的协议栈,主要包括计算机网路 互联网中的协议栈使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
协议栈
协议栈:各层的所有协议成为协议栈。
互联网中的协议栈
五层协议:自上而下依次是:应用层(http/https,ftp,smtp...)
各层协议简述
- 应用层: 应用层是网络应用程序以及他们的应用层协议留存的地方。计算机应用层中包括许多协议: HTTP,SMTP,FTP
应用层的信息分组成为报文(message)。
信息分组:一个端系统中的应用程序使用协议与另一个端系统中的应用程序交换信息分组 - 运输层: 运输层在应用程序端点(每个终端上的应用层和运输层之间的交互)之间传送应用报文(segment)。(TCP,UDP)
运输层分组成为报文段。 - 网络层: 负责将数据报的网络层分组从一台主机移动到另一台主机。(运输层(tcp,udp向网络层递交报文段和目的(接收方端系统)地址))
是的数据报根据路由从源传输到目的地(IP协议在该层) - 链路层: 为了将分层从一个节点(主机或路由器)移动到下一个路由节点(wifi,以太网,docsis(电缆接入网)),链路层的分组成为帧(frame)
- 物理层: 这层中的协议仍然是与链路相关的:链路层的任务是将整个帧从一个网络元素移动到下一个网络元素,而物理层的任务是将该帧中的
一个一个比特,从一个结点移动到下一个结点(双绞铜线,同轴电缆,光纤)
TCP,UDP
http是基于tcp协议的,先简单介绍下tcp,udp协议
- TCP:当应用程序调用TCP作为其传输协议时,该应用程序就获得来自TCP服务的面向连接服务,和可靠数据传输服务(类似编程语言中的继承)
面向连接的服务:应用层数据报文开始流动之前,TCP让客户和服务器互相交换传输层控制信息。称为握手过程,使他们为大量分组的到来做好准备。
在我手阶段,一个TCP连接,就在两个进程(客户端上的进程,服务器上的进程)套接字之间建立了。
这条连接是双工的(可同时进行收和发);当应用程序结束报文发送时,必须拆除连接。
可靠的数据传输:通信进程能够依靠TCP,无差错,按顺序交付所有发送的数据,再另一端能够以TCP将相同的字节流交付给接接收方的套接字,而没有字节的丢失和冗余。 - UDP: UDP是无里无连接的,不可靠的数据传输服务。即:在通讯前不需要进行连接确认,数据发出后,不保证接受房的数据是有序的,不丢失的。
HTTP
http:超文本传输协议(HyperText Transfer Protocol)它是Web的核心。
- http协议是无状态的协议:服务器向客户端发被本次被请求的为对象,而不存储任何关于该客户状态的信息。
例如:某一个特定的客户在短短的几秒内两次请求同一个对象,服务请并不会应为刚刚为该客户提供了该对象就不再做出反应,而是重新发送该对象,
就像服务器完全忘记刚刚做过的事情一样。因为http不保存任何关于客户的任何信息。所以说http是一种无状态的协议。
深入理解: 1 、 协议对于事务的处理没有记忆能力
2、 对于同一个url请求没有上下文关系
3、 每次请求都是独立的 ,它的执行情况和结果跟前面的请求和之后的请求没有直接关系,不受前面请求的应答和后面请求的应答而影响。
4、 服务其中没有保存客户端的状态,客户端必须每次带上自己的状态去请求服务器。 - http是无连接的(非持续连接): 每个TCP连接在服务器发送该连接请求的对象后,关闭该连接,改连接并不为其他的请求对象而持续下来。每个连接只传输一个请求报文和一个响应报文
深入理解:无连接:限制每次连接只处理一个请求,服务器处理完客户的请求并收到客户的应答后就断开连接。
---指的是非持续的连接(因为http是基于tcp及其下层协议的,tcp是面向连接的,所以http就不可能是无连接的,通常这样讲其实表述的意思是(非持续连接的))
《计算机网路自定向下》: KUROSE,ROSS:机械工业出版社
原文地址:https://www.cnblogs.com/liveforlearn/p/15225811.html
- rac节点无法启动ORA-29702的问题及分析(70天)
- SpringMVC,SpringBoot文件下载
- SpringCloud学习1-服务注册与发现(Eureka)
- 物化视图全量刷新与insert的redo生成量测试(69天)
- SpringCloud学习2-Springboot监控模块(actuator)
- 原码,反码,补码 与(&) 或(|) 非(~) 异或(^) 左移 << 右移 >> 无符号右移 >>>
- lombok使用基础教程
- 【Android基础】Android中的Intent详解
- 关于SCN的总结测试 (68天)
- 利用主成分分析构建股票指数
- Java对象的序列化和反序列化源码阅读
- hexo 博客支持PWA和压缩博文
- Hexo next博客添加折叠块功能添加折叠代码块
- HashMap原理阅读
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 基于ReadWriteLock读写锁实现的缓存
- 了解Solr
- Stax解析XML示例代码
- Java调用WebService之Axis实现
- Mybatis笔记二
- 如何在Windows平台上基于github搭建个人博客平台
- [干货]深入浅出LSTM及其Python代码实现
- SpringBoot整合MyBatis原理
- 还在手写LaTeX表格?你可能需要这款神器
- 【V-REP自学笔记(三)】用代码控制机器人
- 简单易懂的Docker基础知识
- 【V-REP自学笔记(四)】键盘控制YouBot机器人
- SSM整合步骤
- 【V-REP自学笔记(五)】YouBot底盘运动学与路径规划
- 【V-REP自学笔记(六)】基于V-REP逆运动学模块的机械臂轨迹规划