传输层概述
传输层说明 如果只想关注计算机网络的应用: 熟悉:应用场景,端口号 了解:传输层功能,特性。 如果想深入学习计算机网络: 熟悉:传输层功能,特性。 熟悉:端口号 传输层功能 实现端到端的通信 复用分用: 复用(从上到下):在发送数据的时候,多个进程可以使用同一个传输层协议 分用(从下到上):在接收数据的时候,传输层可以把数据正确的交给应用层目的进程。 差错检测: TCP检测出差错后立即丢弃数据。 UDP检测出错误后直接丢弃数据,且不通知发送方。 想传输层提供两种服务: 面向连接的、可靠的端到端传输服务(TCP):确保数据无差错,不丢失。开销大,实时性差。 无连接的,不可靠的端到端传输服务(UDP):数据可能出错、丢失,但是速度快,开销小。 端口号 作用:通过端口号标识一个特定进程: 注意:每台主机的端口号是相互独立的。 注意:TCP、UDP两种协议的端口号是独立的。 通过TCP/UDP协议,通过Socket套接字 = { IP地址 : 端口号...
UDP协议
UDP说明 如果只想关注计算机网络的应用: 了解:UDP特点,功能。 熟悉:应用场景。 如果想深入学习计算机网络: 熟悉:UDP特点,报文格式,应用场景。 熟悉:UDP校验和。 概述UDP(User Datagram Protocol,用户数据报协议)是一种无连接的传输层协议,属于TCP/IP协议族,其核心设计目标是提供高效但不可靠的数据传输服务。它直接基于IP协议工作,仅通过复用/分用和校验和机制实现基本的数据传输功能,无需建立连接或维护复杂的状态信息。 特点(面试题) UDP首部很小,只占8B。 UDP每次传输一个完整的报文,不支持报文自动拆分、重装。 UDP是无连接的,不可靠的(可靠性可以交给应用层处理),也不支持拥塞控制。 UDP支持一对一(封装为单播IP数据报)、一对多传输(封装成广播/多播IP数据报) UDP协议不支持报文拆分、重装。因此应用层报文长度不超过UDP协议上限。 报文格式 16位源端口号:表示发送进程的端口号 16位目的端口号:表示接收进程的端口号 16位UDP长度:表示整个数据报的长度(UDP首部 +...
TCP协议
TCP协议说明 如果只想关注计算机网络的应用: 了解:TCP特点,功能。 知道:TCP通过三次握手,四次挥手建立连接即可。 熟悉:应用场景 如果想深入学习计算机网络: 熟悉:TCP特点,功能,报文格式,应用场景。 熟悉:TCP全部功能和机制。 TCP概述TCP(Transmission Control...
无序集合set
集合概述集合就是把一些有关联的数据放到一起 集合中的元素是无序的! 有序:顺序很重要,变换一下顺序,就是不同的list1了无序:顺序不重要,变换一下顺序,集合还是那个集合 集合中的元素是不能重复的(唯一的) 和list类似,集合中的每个元素也都是string类型(可以使用json类型的数据格式) 命令普通命令SADD 功能:将一个或者多个元素添加到set中返回值:本次成功添加的个数时间复杂度:$O(1)$ 123456SADD key number [member...]127.0.0.1:6379> sadd key 1 2 3 4(integer) 4127.0.0.1:6379> sadd key2 1 1 2 3 4(integer) 4 SMEMBERS 功能:获取一个set中的所有元素返回值:set中的元素时间复杂度:近似$O(1)$ 1234567SMEMBERS key127.0.0.1:6379> smembers key1) "1"2) "2"3) "3"4)...
字符串string
stringstring类型Redis中的字符串,直接就是按照二进制数据方式进行存储的!(不会进行任何的编码转换,存的是啥,取出来的就是啥)。Redis对于string类型,限制了大小最大是512M。redis单线程模型,希望进行的操作都能比较迅速。 可以存储文本数据,整数、普通字符串、JSON、XML、二进制数据(图片,视频、音频) 相关命令append 1APPEND KEY VALUE:字符串追加字符串 123456127.0.0.1:6379> set key1 "123"OK127.0.0.1:6379> append key1 你好(integer) 9127.0.0.1:6379> get key1"123\xe4\xbd\xa0\xe5\xa5\xbd" xshell中断,默认字符编码都是UTF-8,在中断中输入汉字之后,也是按照UTF8编码的,一个汉字在UTF-8字符集中,通常是3个字符。 getrange 功能:返回key对应的闭区间[start,...
链表list
列表列表操作 注意:list内部的编码方式,并非是一个简单的数组,而是更接近于双端队列。 列表特点 列表中的元素是有序的,这意味着可以通过索引下标获取某个元素或者某个范围的元素列表。 区分获取和删除的区别。lindex能获取到元素的值,lrem也能返回被删除元素的值。 列表的元素是可以重复的。hash类型,field是不能重复的。 因为当前的List,头和尾都可以高效的插入和删除元素,就可以把这个list当做一个栈/队列来使用了。 相关指令非阻塞版本命令LPUSH 功能:将一个或者多个元素从头插到list中。 时间复杂度:$O(1)$。 返回值:插入list1之后的长度。 注意:如果key已经存在,并且key对应的value类型,不是list,此时lpush就要报错。 123456LPUSH key element [element...]127.0.0.1:6379> lpush key 1 2 3 4(integer) 4127.0.0.1:6379> lpush key 5 6 7 8(integer)...
有序集合zset
zset概述zset是有序集合。zset中的member中同时引入了一个属性,分数,浮点类型。每个member都会安排一个分数,进行排序的时候,就是按照此处的分数大小来进行升序降序排序。 普通命令ZADD 功能:向有序集合中已经有的元素个数时间复杂度:$O(logN)$ 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152ZADD key [NX | XX] [GT | LT] [INCR] socore number [score member...]127.0.0.1:6379> zadd key 99 张三 98 李四 97 王五 96 赵六(integer) 4127.0.0.1:6379> zrange key 0 -11) "\xe8\xb5\xb5\xe5\x85\xad"2) "\xe7\x8e\x8b\xe4\xba\x94"3)...
哈希表hash
hash概述在Redis中,哈希类型是指值本身有是一个键值对结构,形如: 12key = "key",value = {{field1, value1}, {field2, value2}} {: height=75%, width=75%} 注意:哈希类型中的映射关系通常为field-value,用于区分Redis整体的键值对(key-value),注意的是这里的value是指field对应的值,不是键(key)对应的值。 相关命令HSET 功能:设置hash中指定的字段(field)和值(value)时间复杂度:$O(1)$返回值:添加的字段的个数 123456HSET key field value [field value..]127.0.0.1:6379> hset key f1 111(integer) 1127.0.0.1:6379> hset key f2 222 f3 333 f4 444(integer)...




