计算机网络
Pr Young
一个踏实努力,充满激情的程序员!
展开
-
Tcp如何解决丢包和乱序的问题
于是接收方一共收到3个ack=3,于是马上重发3号数据包,然后接收方接收到了3号数据包,此时由于4,5号数据包也已经被接收了,所以发送ack=6,表示接下来希望接收序号为6的数据包。但是3由于某些原因丢失了,没发到接收方那里,4到达了,于是接收方继续发送一个ack=3。1,2先到了,于是接收方返回一个ack=3,表示接下来想要接受一个序号为3的数据包。然后5又到达了,接收方继续发送一个ack=3。发送方发送1,2,3,4,5 一共五份数据。原创 2023-03-04 16:37:08 · 1322 阅读 · 0 评论 -
Socket编程
客户端向Server端发出连接请求,然后server端向客户端发一个accept消息,这样一个连接就建立起来了。然后连接建立了之后,客户端和server端可以相互通过send,write等方法与对方进行通信。简单来说就是Server端监听(listen)某个端口,是否有连接请求。通过一个ip和端口号来唯一标识一个Socket端口。一个是Tcp客户端,一个是Tcp服务端。两台不同主机的应用进程之间双向通信。先是服务器端创建一个socket。Socket就是套接字。原创 2023-03-03 23:51:22 · 49 阅读 · 0 评论 -
get方式提交请求和post方式提交请求
(1)get方法是从服务器上获取资源;post方法是向服务器传送数据在地址栏中输入网址并显示网页,应该使用GET方法。点击超级链接也是使用GET方法。填写完表单内容,点击提交,可能是GET也可能是POST(在HTML源代码中,表单属性会指定使用哪一种该方法来发送请求),仅仅提交不要求返回什么东西就是POST,提交之后还要返回东西那就是GET即:双向(有来有回)是get 单向(有去无回)是post(2)浏览器向Web服务器发送请求消息的三种情况:1.在地址栏输入....原创 2022-05-05 23:59:45 · 3556 阅读 · 0 评论 -
Http状态码
(3)「304 Not Modified」不具有跳转的含义,表示资源未修改,重定向已存在的缓冲文件,也称缓存重定向,也就是告诉客户端可以继续使用缓存资源,用于缓存控制。(1)「301 Moved Permanently」表示永久重定向,说明请求的资源已经不存在了,需改用新的 URL 再次访问。3.3xx 类状态码表示客户端请求的资源发生了变动,需要客户端用新的 URL 重新发送请求获取资源,也就是重定向。(2)「302 Found」表示临时重定向,说明请求的资源还在,但暂时需要用另一个 URL 来访问。原创 2023-01-20 23:40:40 · 1204 阅读 · 0 评论 -
Http请求报文和Http响应报文
【代码】Http请求报文和Http响应报文。原创 2023-01-20 23:24:54 · 147 阅读 · 0 评论 -
ARP协议
你可以自己更改(只要不和你当前网络内其他主机的IP地址相同即可),你上午连接学校里的校园网,下午连接肯德基的免费wifi,晚上连接你同学家的wifi,那一天之内你的电脑就更换了三次IP地址,但是MAC地址不管你连哪里的wifi,你电脑在哪里,MAC地址都是固定的。具体来说就是自动向外发送一个DHCP请求,请求为其分配一个IP地址,并通过DHCP回复报文发送回去,然后再把这个分配的IP地址配置到网卡上,这样网卡就有一个IP地址了。原创 2022-12-16 18:28:55 · 58 阅读 · 0 评论 -
交换机和路由器
子网1中有一台主机 192.168.1.10 ,向其他主机发送消息,首先判断目标主机跟自己是不是属于同一个子网,如果不是同一个子网,就需要将数据报的目标mac改为网关的mac,然后发送给网关。网关通过路由表,查询到这个数据属于子网2的,于是网关修改目标mac地址为目标主机的mac地址,源mac地址为自己的mac地址。LAN口可以有多个,用来连接家庭网络设备,比如台式机,手机,笔记本(通过wifi连接到LAN口)在交换机中,有一张端口和MAC地址的映射表,称为MAC地址表,交换机维护这张表。原创 2022-12-16 17:55:28 · 1632 阅读 · 0 评论 -
如何保证TCP传输的可靠性
重传机制,流量控制,拥塞控制序列号+确认应答 当发送端的数据到达接收主机的时候,接收端主机会返回一个确认应答消息,表示已经收到消息当数据发生丢包时,用重传机制解决重传机制有好几种:超时重传,快速重传,SACK,D-SACK:发送端发送数据后,如果超过指定时间(RTO,超时重传时间,略大于包往返时间RTT,RTT是在动态变化的,所以RTO也是在动态变化的)还没有接收到接收端的ACK确认,就会重新发送数据,原创 2022-12-16 12:23:14 · 601 阅读 · 1 评论 -
TCP/IP四层协议
记住了四层模型,七层模型就很容易记住了,将网络接口层变成数据链路层+物理层,将应用层变为应用层+表示层+会话层,这样四层模型就变成七层模型了。应用层的协议:浏览器和服务器交互遵循的HTTP协议,电子邮件遵循的SMTP协议,DNS协议。两台终端设备的进程之间的通信应该遵守的协议,这一层的数据叫做TCP数据报或者UDP数据报。两台终端设备上的应用程序 应该遵守的协议,应用层的数据成为报文。两台主机之间的数据传输,是在一段一段的链路上传送的。不同主机之间通信应该遵循的协议,网络层的数据称其为IP数据报。原创 2022-12-15 11:31:47 · 2348 阅读 · 0 评论 -
ping命令
ping是一种网络诊断工具ping就是发送数据包到目标端,然后等待ping回来的数据来判断是否可以抵达目标端,预计与目标端的距离,传输到目标端需要的时间等等 ping 127.0.0.1并不能测试与其他主机是否能够连接,而是检测自己主机的基础网络配置是否正常,也就是检查本机的tcp/ip是否正确安装,即使没有连上互联网也是可以ping通这个地址的除了ping ip地址,也可以ping 域名原创 2022-12-06 10:26:58 · 4404 阅读 · 0 评论 -
建网站(为什么租服务器和购买域名)
你的网站想要每时每刻都可以被人访问到,电脑就不能关机,就需要租服务器服务器在互联网中一定要有可以让别人公开访问的地址,也就是公网ip地址(在你购买服务器之后就可以获取这个ip地址了),ip地址不方便记忆,于是我们需要购买域名(你可以自己想一个域名,因为需要dns服务器帮你解析域名,所以需要收取费用),域名和ip地址挂钩,别人访问你的域名就等同于访问你的ip地址(比如b站域名www.bilibili.com,对应的ip地址是119.3.70.188)原创 2022-12-06 10:00:18 · 598 阅读 · 0 评论 -
Http1.0,Http/1.1,Http/2,Http/3
Http/1.1的核心思想就是一次一份 1997年公布发送完一个http请求的时候,需要等到收到http响应,才能发送下一个http请求 Http/2 多路复用 2015年公布 Http/3 2019年公布原创 2022-12-05 16:31:39 · 81 阅读 · 0 评论 -
在浏览器中输入url回车后发生了什么
1.dns进行解析:将url地址(www.bilibili.com)解析成ip地址(110.43.34.184),ip地址就是想要访问的服务器的地址dns就是数据库,这个数据库中记录着url地址和ip地址的对应关系2.正式发送数据之前还得建立tcp连接(在发送数据之前建立通道,之后客户端和服务器端就可以在这个通道里面发送数据了),建立这个tcp连接需要进行三次握手三次握手:(1)客户端先发送SYN数据包来表示请求连接(2)服务器向客户端响应SYN+ACK数据包表示同意建立连接(3)客户端再向服务器端发送一个原创 2022-12-05 14:18:44 · 655 阅读 · 0 评论 -
Http协议和Https协议
Http是不安全的,你的数据容易被黑客拦截,篡改,攻击https要求对数据加密(不能明文传输),用抓包工具抓http请求,抓出来的都是明文的,你能看得懂的,抓https请求,抓出来的都是加密的1.http是明文传输,不适合传输敏感信息,比如身份证,账号,密码https是加密传输,是在http的基础上增加了ssl协议,ssl通过证书对浏览器和服务器之间的通信进行加密,申请证书需要费用2.http的是80端口,https是在443端口 证书,CA名词解释服务器申请SSL证书,来证明www.baidu.com这原创 2022-12-04 01:16:27 · 4809 阅读 · 0 评论 -
对称加密和非对称加密
对称加密:使用一个密钥,这个密钥既可以用来加密,也可以用来解密 非对称加密:使用一对密钥,公钥和私钥使用公钥加密就使用私钥解密,使用私钥加密就使用公钥解密,两个密钥是不同的服务原创 2022-12-04 00:23:36 · 108 阅读 · 0 评论 -
UDP编程实现发消息
【代码】UDP编程实现发消息。原创 2022-08-28 15:43:59 · 101 阅读 · 0 评论 -
TCP编程(实现客户端给服务器端发送消息)
step3:客户端新建一个socket,传入服务端的地址和端口号,连接上服务端的端口。step2:(服务器端)一直监听这个端口有没有socket连接过来。step1:服务器端指定一个端口号来建立socket连接。step7:先运行服务器端程序,再运行客户端程序。客户端发送消息,服务器端接收消息。step5:服务器端关闭流和socket。step6:客户端关闭流和socket。1.客户端给服务器端发送消息。......原创 2022-08-28 12:01:02 · 2248 阅读 · 0 评论 -
子网划分透彻理解
网络地址分为两部分:网络地址和主机地址子网划分就是将主机地址继续进一步分成子网网络地址和子网主机地址比如:192.168.1.0,本来前24位是网络号,后8位是主机号,从8位主机号中借用2位作为子网号由于借用了2位作为子网号,所以子网网址有四个,分别是00,01,10,11,每个子网最大可以有2的6次方64台主机...原创 2022-05-17 18:41:40 · 943 阅读 · 0 评论 -
IP地址的分类
IP 地址分类成了 5 种类型,分别是 A 类、B 类、C 类、D 类、E 类(1)由于A类地址第一位是0,所以前八位最大是0111 1111,也就是127所以A类地址IP地址范围是0.0.0.0~127.255.255.255,由于网络号7位,主机号24位,所以,一个网络号内可以有(2的24次方-2)台主机,总共有2的7次方个网络号,所以总共可以表示的主机数:2的7次方✖(2的24次方-2)去掉两个特殊的IP地址,全零和全1,全零表示整个网络,全1表示这个网络下所有主机,用于广播(2)原创 2022-05-17 18:20:11 · 7147 阅读 · 2 评论 -
Tcp协议的滑动窗口机制
如果每发送一个数据包就进行一次确认应答,当收到上一个数据包的确认应答,再发送下一个不需要等到确认应答,就可以继续发送数据发送方主机在等到确认应答返回之前,必须在缓冲区中保留已发送的数据。如果按期收到确认应答,此时数据就可以从缓存区清除。假设窗口大小为 3 个 TCP 段,那么发送方就可以「连续发送」 3 个 TCP 段ACK 600 确认应答报文丢失,也没关系,只要发送方收到了 ACK 700 确认应答,就意味着 700 之前的所有数据「接收方」都收到了(累计确认)窗口大小由接收原创 2022-05-17 12:12:55 · 486 阅读 · 0 评论 -
TCP的重传机制
接收到数据后,返回一个确认应答,表示已经收到消息万一数据在传输过程中丢失了呢? TCP 针对数据包丢失的情况,会用重传机制解决。(1)超时重传在发送数据时,设定一个定时器,当超过指定的时间后,没有收到对方的 ACK 确认应答报文,就会重发该数据所以当数据包丢失或者是确认应答ACK丢失之后,发生超时重传超时重传时间应该设置为多少呢?应该略大于报文往返时间RTT(因为我们的网络也是时常变化的,所以报文往返RTT也是经常变化的,因此超时重传时间也是波动变化的)(2)快速重传...原创 2022-05-17 11:55:23 · 6659 阅读 · 0 评论 -
TCP三次握手和四次挥手
传输数据之前需要先建立连接,TCP 连接的建立,称为三次握手一开始,客户端和服务端都处于 Close状态然后服务器监听某个窗口,处于Listen状态客户端发起连接,发送SYN,发完之后自己处于SYN_SENT状态服务端收到SYN,立马返回SYN+ACK(即SYN和ACK),自己进入SYN_RCVD状态客户端收到SYN+ACK(即SYN和ACK),马上发送对SYN确认的ACK,并且自己进入established状态服务端收到对SYN确认的ACK,也进入established状.原创 2022-05-17 09:58:00 · 694 阅读 · 0 评论 -
Http协议
1.Http状态码1.1xx用的很少2.2xx就是成功了,是我们最希望看到的3.3xx 类状态码表示客户端请求的资源发生了变动,需要客户端用新的 URL 重新发送请求获取资源,也就是重定向。(1)「301 Moved Permanently」表示永久重定向,说明请求的资源已经不存在了,需改用新的 URL 再次访问。(2)「302 Found」表示临时重定向,说明请求的资源还在,但暂时需要用另一个 URL 来访问。301 和 302 都会在响应头里使用字段 Location,指明后原创 2022-05-16 23:00:00 · 177 阅读 · 0 评论 -
Mac地址和IP地址的区别
发送数据包时,如果目标主机不在局域网内,那这个数据包内填入的目标MAC地址就是路由器的Mac地址经过路由器转发,这个数据包的源Mac地址是这个路由器的Mac地址,目标Mac地址是下一个路由器的Mac地址然后路由器又转发给下一个路由器,这个数据包的源Mac地址是这个路由器的Mac地址,目标Mac地址是下一个路由器的Mac地址...........直到转发到一个路由器,这个路由器发现IP地址是自己局域网内的主机,于是 arp 请求获取这台主机的MAC地址,转发给这台主机也就是说,在这个过程中原创 2022-05-16 21:59:35 · 1103 阅读 · 0 评论 -
计算机网络七层模型,五层模型,四层模型
以四层模型为例:网络接口层的传输单位是帧(frame),IP 层的传输单位是包(packet),TCP 层的传输单位是段(segment),HTTP 的传输单位则是消息或报文(message)。但这些名词并没有什么本质的区分,可以统称为数据包。①应用层( 协议:HTTP、FTP、DNS、SMTP)一台设备上可能会有很多应用在接收或者传输数据,因此需要一个编号来将这些应用区分开,这个编号就是端口,比如80 端口通常是 Web 服务器用的,22 端口通常是远程登录服务器用的。而对...原创 2022-05-16 20:43:40 · 932 阅读 · 0 评论 -
代理(proxy):正向代理,反向代理
(1)正向代理先接收来自客户端的请求消息,然后转到互联网中(有缓存的话效果会更好,以前发送的消息更快)由于代理在转发过程可以查看请求的内容,所以可以根据内容判断是否允许访问。也就是说,通过代理可以禁止员工访问危险的网站,或者是与工作内容无关的网站设置正向代理之后(在浏览器的设置窗口中的”代理服务器“一栏填写正向代理的IP地址),你在浏览器中输入网址后,浏览器就不会访问相应服务器,而是将请求发送给正向代理,再由正向代理转发给服务器...原创 2022-05-08 23:22:31 · 2402 阅读 · 0 评论 -
服务器负载均衡
采用多台服务器分担负载(即采用分布式架构)假设我们采用多台服务器,那么每台服务器的访问量会减少到三分之一(1)采用轮询的方式比如对于域名www.lab.glasscom.com分配给他三个IP地址:192.0.2.60,192.0.2.70,192.0.2.80第四次查询又回到第一次查询的结果,第五次查询又回到第二次查询的结果......通过这种方式将访问平均分配给所有的服务器这种方式的缺点在于:假如其中一台服务器出现问题,这时我们希望在返回IP地址时能够跳过故障的Web服务原创 2022-05-08 17:31:55 · 419 阅读 · 0 评论 -
互联网(最大的网络)
互联网内部有上万台路由器,通过多台路由器转发之后连入互联网的方式:ASDL,FTTH(光纤接入网),CATV,电话线,ISDN等原创 2022-05-08 16:52:01 · 195 阅读 · 0 评论 -
公有地址,私有地址
本来互联网所有的设备都有自己的固定地址(没有内网和外网的区别,所有客户端都直接连到互联网)但是后来,接入互联网的设备数量实在是太多了,可分配的地址用光了固定地址的分配方式显然不行了假设有两家公司A,B,它们的内网是完全独立的,公司内部内网,所有计算机的IP地址必须不同但是A公司的某台机器可以和B公司的某台机器IP地址相同同一个内网内部的计算机对外只有一个共有地址但是这些同一个内网的计算机对应不同的端口号,私有地址各不相同...原创 2022-05-08 16:02:37 · 385 阅读 · 0 评论 -
TCP协议和UDP协议的对比,区别
(1)TCP漏掉一个包就全部重发一遍,UDP避免发已经送达的包,只重发那些未送达的包(2)使用UDP的场景:1.数据大小在一个包以内,用UDP2.发送音频和视频数据的时候。音频和视频数据必须在规定的时间内送达,一旦送达晚了,就会错过播放时机,导致声音和图像卡顿。如果像TCP一样通过接收确认响应来检查错误并重发,重发的过程需要消耗一定的时间,因此重发的数据很可能已经错过了播放的时机。一旦错过播放时机,重发数据也是没有用的,因为声音和图像已经卡顿了,这是无法挽回的。当然,我们可以用高速线路让重发的数原创 2022-05-08 10:13:05 · 820 阅读 · 0 评论 -
大包切分成多个小包
网络中只能传输小包,所以需要将大的包切分成多个小包对于接收方而言,如果接收到包是经过分片的,那么需要将它们还原成原始的包(分片重组)包的头部会有一个ID字段,同一个大包的小包ID字段值相同,此外们还有一个偏移量字段,表示这个分片在整个包中所处的位置...原创 2022-05-07 22:41:58 · 499 阅读 · 0 评论 -
以太网介绍
以太网技术是为了让多台计算机能够相互通信,原型如下:当一台计算机发送信号时,信号会通过网线向每一台设备发送,最终到达所有设备(就像所有人呆在一个大房间,任何一个人说话,所有人都能听到)我们无法判断一个信号到底是发给谁的,因此需要在信号的开头加上接收者的信息,也就是地址。这样一来就能够判断信号的接收者了,与接收者地址匹配的设备就接收这个包,其他的设备则丢弃这个包,这样我们的包就送到指定的目的地了后来演变成将主干网络替换成一个中继式集线器(将信号发送给所有设备这一基本性质没有改变)..原创 2022-05-07 22:30:22 · 1573 阅读 · 0 评论 -
网卡(物理层)
IP地址不是分配给计算机的,而是分配给网卡的,每一块网卡都会有自己的IP地址,当一台计算机(服务器上就经常有多块网卡)上存在多块网卡的时候,这台计算机就会有很多个IP地址,当你用这台计算机给别的计算机发送消息的时候,需要说明自己的用的是哪一个IP地址,也就是说明是用哪一块网卡来发送这个包...原创 2022-05-07 21:11:20 · 432 阅读 · 0 评论 -
MTU和MSS
如果一收到数据就马上发送出去,就可能会发送大量的小包,导致网络效率下降因此需要数据积累到一定量的时候再发送出去MTU 表示一个网络包的最大长度(在以太网中一般是1500字节)MTU是头部+数据的最大长度,MSS是一个网络包中所能容纳的最大数据长度当积累的数据长度接近MSS时再发送出去,就可以避免发送大量小包的问题了...原创 2022-05-06 07:22:21 · 393 阅读 · 0 评论 -
ICMP协议和ARP协议
ICMP协议用于告知网络包传送过程中产生的错误ARP协议用于根据IP地址查询相应的以太网MAC地址网卡驱动程序负责控制网卡硬件下面一层的网卡负责完成实际的收发操作,即对网线中的信号执行发送和接受的操作...原创 2022-05-06 07:14:53 · 1066 阅读 · 0 评论 -
netstat和netstat -ano
(1)在命令行窗口中输入netstat后应该怎能读呢?本机地址为10.1.127.144,本机的52051端口正在和IP地址为183.192.164.67的8864端口进行通信,而且通信使用的是TCP协议(本机使用52021端口,对方使用8864端口)(2)在命令行中输入netstat -ano可以看出多了PID这一列(表示是PID为这个数的程序正在占用某个端口和外部某台机器的某个端口进行通信)所以netstat -ano比netstat能显示更多的信息,是升级版本,plus版本原创 2022-05-06 07:02:20 · 2158 阅读 · 0 评论 -
套接字的理解
注意:套接字只是管道的出入口,不是管道,管道的出入口称为套接字首先:服务器方先创建套接字,然后服务器进入等待状态然后:客户端也会创建一个套接字,然后该从该套接字延伸出管道,管道连接到服务器端的套接字...原创 2022-05-05 23:58:44 · 141 阅读 · 0 评论 -
DNS机制(实现域名和IP地址的转化)
(1)本地主机与服务器之间的交互如果想访问某台服务器,人们显然是记不住这台服务器的32位IP地址的,但是域名www.baidu.com是很容记住的,将域名转化为IP地址的过程就叫域名解析(我们的计算机上有DNS客户端,也叫DNS解析器)将域名发送给DNS服务器(发送查询请求),DNS服务器从域名和IP地址的对照表中查找,DNS服务器返回这个域名对应的的IP地址(返回响应消息)注意:向DNS服务器发送消息的时候,我们也需要知道DNS服务器的IP地址,只不过这个IP地址是预先设置好的(2)D原创 2022-05-05 23:38:53 · 4692 阅读 · 0 评论 -
IP地址和子网掩码
(1)一台计算机给另一台计算机发消息的整体过程(为什么需要IP地址)集线器将几台计算机连接起来,形成一个子网小的子网通过路由器连接起来组成一个大的网络一台计算机在某个子网下的某个编号消息先经过子网中的集线器转发到距离最近的路由器,然后路由器再根据消息的目的地判断要转发给哪个路由器(路由器之间消息的传递也是通过集线器).....,多次转发后,路由器再将消息通过集线器转发给某个子网中的某台计算机(2)子网掩码IP地址由两部分组成,子网号+主机号,一共有32位,8比特一组,所以一共原创 2022-05-05 17:15:12 · 154 阅读 · 0 评论 -
用户输入url-浏览器发送请求消息-服务器发送响应消息
(1)用户输入url,浏览器解析url输入url:http://www.lab.glasscom.com/dir1/file1.html浏览器对URL进行解析,知道了服务器名称是www.lab.glasscom.com,文件的路径是dir1/file1.html即我们要访问的是www.lab.glasscom.com这台服务器里的dirl1目录下的file1.html这个文件(2)浏览器向服务器发送请求消息生成http请求消息,将请求消息发送给服务器http请求消息的格式:第一行是请原创 2022-05-05 16:28:57 · 448 阅读 · 0 评论