网络编程
文章平均质量分 89
Zevin~
这个作者很懒,什么都没留下…
展开
-
数据链路层
主域名是用来识别主机名称和主机所属的组织机构的一种分层结构的名称域名使用**.**连接com:一级域名,表示一个企业域名,同级的还有net(网络提供商),org(非盈利组织),edu(教育组织),gov(政府),cn(中国),baidu:二级域名,公司名www:只是一个习惯的用法,之前人们使用域名的时候,往往命名类似于ftp.xxx.xxx/www.xxx.xxx这样的格式,来表示主机支持的协议。原创 2022-09-16 11:15:38 · 642 阅读 · 0 评论 -
IP基础(2)
如果一个组织内部组建局域网,IP地址只用于局域网内部的通信,而不连接到Internet上,理论上任意IP都是可以,但是RFC1918规定了用于组建居于网内的私有IP地址。大多数的组织都申请B类网络地址,这样也很浪费空间,理论上,申请b类地址,一个子网内可以允许6万5千多太主机,A类就更多了,针对这种浪费IP的情况,又引入了CIDR(Classless interdomain Routing),不进行划分。但是,手动管理子网内的IP,是一个相当麻烦的事情。子网掩码FF FF FF F0。原创 2022-09-11 23:11:35 · 629 阅读 · 1 评论 -
IP基础(1)
分片的过程传输层不知道,也不需要知道 ,在我们这边的网络层进行分片,到对端的网络层进行组装,传输层就没法感知到发送的报文被分片了。:每经过一个路由器,TTL-1,减到0,就不再被转发,在网络里面传输,等了好久没有达到,这个报文就丢弃了,避免网络资源浪费。:如果没有分片,不同的报文,标识符是不一样的,如果分了片,标识符是一样的,(相同标识符代表的是同一个报文)4为TOS字段,分别表示,最小迟延,最大吞吐量,最高可靠性,最小成本,只能选其一。未经过分片的报文,13位片偏移=0,3位标志位的标志设置位0。原创 2022-09-07 11:19:06 · 889 阅读 · 2 评论 -
TCP延申
TCP是基于字节流的,只维护发送出去多少,确认了多少,并不会维护消息和消息的边界,这就导致了粘包问题,他在应用层取数据的时候,不知道从哪里到哪里是一个完整的应用层数据包,面向字节流读文件都会有这种问题。我们知道TCP 连接是通过socket进行的,socket本质就是打开了一个文件,文件就存在于PCB的文件描述符表之中,每次打开一个socket文件都会在文件描述符表添加一项,删除会减少的一项。当强制结束进程时,PCB没了,里面的文件描述符表也没了,就相当于自动关闭了,也依然会执行四次挥手的过程。原创 2022-09-05 16:03:09 · 752 阅读 · 14 评论 -
TCP的管理机制(3)
:发送缓冲区的一部分,和对方的接收能力有关:接收缓冲区剩余的大小如图我们没有等待ack连续发了很多报文假如说客户端硬件设备比较先进,一直在给服务端发送数据,那么就会把服务器端的内核缓冲区给挤爆,如果有阻塞机制的话,那么服务器端就阻塞在了那边,如果没有阻塞机制的话,那么服务器端的前面的数据就会被覆盖掉所以这个时候就会有一个叫做滑动窗口的机制,服务端告诉客户端,用来存放数据的缓冲区有多大,如果满了的话,就不要再发送了滑动窗口就是为了防止数据丢失,防止出现丢包的情况可以在应答报文中填写上我自己的接收缓冲原创 2022-09-05 05:45:00 · 1268 阅读 · 6 评论 -
TCP连接管理(2)
TCP服务器里面发起建立连接一般都是client先描述在组织有描述连接的结构体,里面填充的就是描述连接的各自属性,后以各种数据结构连接起来双方维护连接是有成本的(时间+空间)对客户端来说:发送数据syn验证了自己能发送数据,收到syn+ack验证了自己能收到数据,同时发送成功对服务端来说:客户端发送syn验证了自己能收数据,发送syn+ACK,得到客户端回应ack说明了自己能发送数据,没有第三次握手无法证明服务端有发送的能力。......原创 2022-08-31 20:24:19 · 453 阅读 · 8 评论 -
传输层——UDP
UDP 作为传输层的协议,他规定了数据什么时候发送,发送多少的问题,交付给上层,是由目的端口号来完成的,有效载荷和数据进行分离的工作是由固定报文首部长度来实现的UDP过程分析当对端UDP 层获取到这个报文的时候,先识别8字节,然后就可以拿到这个报文的长度是多少,测试报文有没有出错,然后通过16为目的端口号,得知要标识交付给上一层的哪一个协议一些特点报文通过目的端口号进行报文的分用,通过定长找到对应的报文长度,字段进行获取有效载荷UDP没有任何一个填充字段或者选项,说明他的内容很简单。......原创 2022-08-18 20:07:31 · 590 阅读 · 4 评论 -
HTTP协议
虽然说,应用层协议是我们程序员自己定制的,但是实际上,已经有很多大佬定制了一些现成的,又很好用的应用层协议,可以让我们直接进行参考使用,HTTP(超文本传输协议)就是其中之一HTTP协议支持cs模式(客户端服务器模式,也就是请求和响应模式)并且客户端需要以浏览器的方式访问服务器,Uniform Resource Locator就是去确认哪一个资源在哪一个服务器上有些特殊符号需要特殊处理?/+,中文字符和特殊字符会做编码,而数字字母连字符都不会做处理转码规则服务器接收的时候要进行转码如果请求正文里面的请求原创 2022-08-15 00:31:19 · 410 阅读 · 10 评论 -
网络计算器—————序列化与反序列化
我们程序员写的一个一个程序,都是在应用层我们发送的数据都是结构化的数据,这种结构话的数据就很好看也很好使用这就是一个结构化的消息,我们要把这个结构化的数据转化成一个从“字符串”,我们要把这个结构化的数据“{昵称:xxx,头像:xxx,消息:xxx}”,把它传送到网络里面,到对端之后,再把它解析出来,读取到对应的结构体里面序列化:把结构化的数据转化为字符串的过程就是序列化的过程,反序列化:把字符串转化为结构体信息就是反序列化的过程,因为结构化的数据,再网络里面不方便传输,字符串便于网络传输为什么要进行序列原创 2022-07-12 20:50:44 · 707 阅读 · 7 评论 -
socket编程
我们所写的程序都是在用户层进行开发,或者说是在应用层进行协议的创建和规定,所以我们所用到的接口都是传输层所用到的接口,也就是系统调用接口,也就是说,我们后面所学的套接字接口,所用的都是传输层的接口两个主机之间的通信,是不是可以认为是两个主机硬件之间的通信,我们今天,这里更加专业和准确的来说,套接字本质就是进程之间的通信(是指不同主机之间的进程)而ip地址的主机的唯一性,但是在这个主机上有很多进程,那么我应该怎么去确定我应该给哪一台主机呢?所以,我们还需要通过某种方式来去表示特定主机上的某种进程,而标识进原创 2022-07-11 10:29:17 · 725 阅读 · 2 评论 -
多路IO转接——前导
在网络中通过网课设备向另外一段的输入设备进行输入,首先我们先介绍一下中断底层网卡有数据到达时候,此时硬中断通知操作系统,操作系统生成软中断对数据进行拷贝工作通常引入中断都是外设,系统当中数据准备就绪,需要拷贝到内存里面,需要硬件层面上的中断来完成waitpid并没有使用中断:本身就是一个软件,父子进程有直接的关系,子进程在退出的时候,可以根据PCB 找到父进程在之前的网络套接字代码编写的时候,我们可能使用的是read和write进行操作,使用这个还是的时候,我们在写入或者读取的时候进程都是阻塞的,此时这个原创 2022-07-01 14:51:02 · 275 阅读 · 0 评论 -
TCP客户端服务器代码
此TCP服务器客户端使用TCPcodeserver.ccserver.hppthreadpool.hppIO.hpp客户端client.ccclient.hpp原创 2022-06-18 23:09:29 · 674 阅读 · 4 评论 -
粘包问题
TCP是一个面向连接的,可靠的,安全的流式协议粘包是指的是数据和数据之间没有没有明确的分界线,导致不能够正确的传输数据(只有TCP会粘包 UDP 永远不会粘包),粘包问题只针对于一切字节流的协议TCP也可以称为流式协议,UDP称为数据报式协议对于流式协议:发送端可以1K1K的发送数据,接收端可以2k2k的提取数据,也可以3K4K的提取数据,所以对于接收端应用程序中看到的数据就是一个整体,“数据流”,一条消息里面有多少字节应用程序是看不见的,所以TCP协议面向字节流,就会出现粘包问题,而UDP这种面向消息的原创 2022-06-18 22:33:15 · 1179 阅读 · 6 评论 -
TCP基础(1)
TCP和UDP原创 2022-06-13 21:33:26 · 2888 阅读 · 28 评论 -
网络基础背景入门
计算机网络背景网络发展现有计算机再有OS,原来没有OS之前使用计算机的成本是很高的,只有科学家才可以使用,在有了OS之后,计算机的使用成本就降低了,之后计算机进入到高校里面,在有了OS之后再有网络我们做实验产生了数据,这个时候数据需要交给别人当企业里面有3个人A,B,C。A处理完数据后把数据传送给B,B在A处理完之前都在等待B处理完数据之后把数据传给C,C在AB都处理完之前在等待数据在来回传导高校内部有数据研究和沟通的需求,就需要产生网络(就是为了提高效率)如以前没有网络,我们想给原创 2022-05-25 21:56:51 · 207 阅读 · 0 评论