网络
文章平均质量分 94
庞小二
无
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ARP协议
当网络设备有数据要发送给另一台网络设备时,必须要知道对方的网络层地址(即IP地址)。IP地址由网络层来提供,但是仅有IP地址是不够的,IP数据报文必须封装成帧才能通过数据链路进行发送。数据帧必须要包含目的MAC地址,因此发送端还必须获取到目的MAC地址。原创 2025-04-03 14:44:29 · 1414 阅读 · 0 评论 -
数据链路层协议--以太网协议
路由器A的IP层拿到解包后的IP数据报后,会提取出IP报头当中的目的IP地址,然后通过查询路由表后确定需要将该数据转发给路由器B,于是路由器A再将数据向下进行交付,重新封装MAC帧的帧头和帧尾,但此时封装后的MAC帧当中的源MAC地址和目的MAC地址,就变成了路由器A的MAC地址和路由器B的MAC地址。此时主机A所在局域网当中的所有主机都能收到这个MAC帧,但最终只有路由器A发现该MAC帧当中的目的MAC地址与自己的MAC地址相同,于是才会对该MAC帧进行解包,并将解包后剩下的IP数据报交付给IP层。原创 2025-03-31 17:02:32 · 1304 阅读 · 0 评论 -
网络层协议--IP协议
因此一个数据在路由的时候,随着数据不断路由进入更小的子网,其网络号的位数是在不断变化的,准确来说其网络号的位数是在不断增加的,这也就意味着IP地址当中的主机号的位数在不断减少。需要注意的是,未分片报文的“更多分片”标志位为0,最后一个分片报文的“更多分片”标志位也为0,但当接收端只收到分片报文中的最后一个分片报文时,接收端不会将其识别成一个未分片的报文,因为未分片的报文所对应的13位片偏移的值也应该是0,而最后一个分片报文所对应的13位片偏移的值不为0。经过网络层的封装,数据最终会交付给下层的数据链路层。原创 2025-03-24 22:17:56 · 1209 阅读 · 0 评论 -
传输层协议--TCP协议
三次握手是验证双方通信信道的最小次数:因为TCP是全双工通信的,因此连接建立的核心要务实际是,验证双方的通信信道是否是连通的。而三次握手恰好是验证双方通信信道的最小次数,通过三次握手后双方就都能知道自己和对方是否都能够正常发送和接收数据。在客户端看来,当它收到服务器发来第二次握手时,说明自己发出的第一次握手被对方可靠的收到了,证明自己能发以及服务器能收,同时当自己收到服务器发来的第二次握手时,也就证明服务器能发以及自己能收,此时就证明自己和服务器都是能发能收的。原创 2025-03-21 16:06:19 · 1531 阅读 · 0 评论 -
传输层协议--UDP
(应用程序),当主机从网络通信中获取到数据时,需要自底向上进行数据的交付,而将数据交付给应用层的哪一个应用程序,就是端口号决定的因此,端口号是属于传输层的概念。原创 2025-03-17 21:22:43 · 739 阅读 · 0 评论 -
应用层协议------HTTP协议
全称超文本传输协议,是用于从万维网服务器传输超文本到本地浏览器的传送协议HTTP是一种应用层协议,是基于TCP/IP通信协议来传递数据的,其中 HTTP1.0、HTTP1.1、HTTP2.0 均为 TCP 实现,HTTP3.0 基于 UDP 实现。现主流使用 HTTP1.0 和 HTTP3.0平时我们俗称的”网址“,其实就是 URL(Uniform Resource Locator),翻译为统一资源定位符互连网上的每个文件都有一个唯一的 URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。原创 2025-03-11 18:39:14 · 1504 阅读 · 0 评论 -
自定义协议
在计算机科学中,协议(Protocol)是对数据格式和计算机之间交换数据时必须遵守的规则的正式描述。例如,网络中的计算机要能够互相顺利通信,就必须遵守相同的协议,如Ethernet、NetBEUI、IPX/SPX以及TCP/IP协议。原创 2025-03-06 10:26:03 · 1724 阅读 · 0 评论 -
网络套接字编程(总结)
在上篇内容中,我们实现了TCP服务器,但是在退出并立即重启服务器时,我们会发现出现bind error的情况,是因为服务器在关闭后会进入timewait的状态,此时就需要等待2msl才能使用这个端口,对于用户而言,2msl的时长太长,(linux的2msl时长大约有40s到60s),所以需要复用这个端口,使得服务端能够正常运行函数简介level(级别)指定系统中解释选项的代码为通用套接字代码,或为某个特定协议的代码。optval是一个指向某个变量(optval)的指针,setsockopt从。原创 2025-03-04 10:36:46 · 1080 阅读 · 0 评论 -
网络套接字编程(二)
由于调用pthread_create函数创建线程时,新线程的执行例程是一个参数为void*,返回值为void*的函数。如果我们要将这个执行例程定义到类内,就需要将其定义为静态成员函数,否则这个执行例程的第一个参数是隐藏的this指针在线程的执行例程当中会调用Service函数,由于执行例程是静态成员函数,静态成员函数无法调用非静态成员函数,因此我们需要将Service函数定义为静态成员函数。恰好Service函数内部进行的操作都是与类无关的,因此我们直接在Service函数前面加上一个static即可。原创 2025-03-03 09:49:31 · 1060 阅读 · 0 评论 -
网络套接字编程(一)
因为服务器就是为了给别人提供服务的,因此服务器必须要让别人知道自己的IP地址和端口号,IP地址一般对应的就是域名,而端口号一般没有显示指明过,因此服务端的端口号一定要是一个众所周知的端口号,并且选定后不能轻易改变,否则客户端是无法知道服务端的端口号的,这就是服务端要进行绑定的原因,只有绑定之后这个端口号才真正属于自己,因为一个端口只能被一个进程所绑定,服务器绑定一个端口就是为了独占这个端口。也就是说,客户端每次启动时使用的端口号可能是变化的,此时只要我们的端口号没有被耗尽,客户端就永远可以启动。原创 2025-02-27 14:56:14 · 1158 阅读 · 0 评论
分享