计算机网络的简单概述以及在浏览器中输入一个网址后如何执行
- 网络:把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模宏大、功能强大的网络系统,从而使众多的计算机可以方便地互相传递信息,共享硬件、软件、数据信息等资源。
- 如同语言一样,如果想让不同地区的电脑都能互相发送数据并且互相接收并能识别出来就需要一个标准,为了使数据在网络上从源到达目的,网络通信的参与方必须遵循相同的规则,这套规则称为协议(protocol),它最终体现为在网络上传输的数据包的格式。
- 电脑根据相同的协议,将数据按照要求那样排列出来发送到网络中。
- TCP传输控制协议:TCP协议是一种可靠的端对端协议,重发一切没有收到的数据,进行数据内容准确性检查并保证分组的正确顺序。
- IP网际协议:规定数据传输格式
- 应用层协议
- HTTP超文本传输协议,基于请求和响应模式。(无状态)
- 文件传输协议
- 简单邮件传输协议
- 为了实现Internet上不同计算机之间的通信,每台计算机都必须有一个不与其它计算机重复的地址---IP地址
- IP地址是数字型的,32位(32bit),由4个 8位的二进制数组成,每8位之间用圆点隔开,显示时是十进制
- IP地址被分成了A、B、C、D、E五类,每个类别的网络标识和主机标识各有规则。
- 1.0.0.0到126.255.255.255为A类 主要分配给具有大量主机而局域网络数量较少的大型网络
- 128.0.0.0到191.255.255.255为B类 一般用于国际性大公司和政府机构
- 192.0.0.0到223.255.255.255为C类 用于一般小公司 校园网 研究机构等
- 224.0.0.0到239.255.255.255为D类 用于特殊用途. 又称做广播地址
- 目前正在使用的是IP协议的第四版,称为IPv4(利用命令查看各自本机的ip地址)windows ipconfig linux ifconfig
- 负责同一网络内计算机互相通信,通信方式是广播形式,比如在192.168.2.0网络内广播传递信息会给所有192.168.2.0~192.168.2.255内发送信息。
- 坏处是会造成网络的拥堵。
- 也是负责同一网络内计算机通信,不像集线器那样采用广播形式,而是根据MAC地址和IP与目标计算机通信。第一次使用时每个计算机会发送一个ARP协议包给交换机,交换机将缓存下局域网下所有MAC地址,下次发送信息时就会根据这个MAC表来选择发给哪个PC。
- 好处:具有学习功能;具有缓存地址功能但地址也会改变,默认老化时间300s。
- 简单来说就是用来负责不同网络的计算机之间的通信。
- 比如当192.168.4.1的计算机A想要给192.168.5.1的计算机B通信时,A计算机通过将自己的子网掩码和IP地址相与操作后发现和B计算机不在一个网络内,就会把信息发送给默认网关的IP地址,一般情况默认网关就是连接的路由器的一侧IP,交换机拿到这个目标后查表发现是路由器的地址后转给路由器。路由器查找路由表后发现目标IP就是另一侧的IP网段192.168.5.0,于是就把信息转发到自己的另一侧网段也就转给B计算机了。
- 但是如果发现自己的另一侧IP不是目标网段,路由器就会根据路由表给每个和自己另一侧IP记录的IP地址发送,接受到的下一个路由器也会执行相同的操作,经过几次传送后就会计算出花费时间最少的一次,以后再发送数据就按照这个路线走。注意每个IP报文是有声明周期的不会一直无限在网络内乱传。
- 在数据传递时区分不同计算机的进程。
- 同一台电脑上的进程有Pid号,但是这个pid是随机的,每次开机相同的进程可能都不一样。
- 比如电脑开着QQ和微信,另一台电脑传过来一个QQ消息数据,电脑怎么知道这是QQ的数据而不是微信的数据,靠的就是端口,QQ和微信的端口号不同,计算机上的每个进程端口号都不一样否则会冲突导致相同端口的进程只有一个能收到数据。
- IP地址相当于现实生活中的门牌号,而端口号就相当于该门牌对应房子的各个房间号(0~65535,相当于2个字节)建议应用程序使用20000以后的端口号。比较出名的有80号端口。
- 计算机想要和另外一个计算机传递数据首先要知道的是对付的IP,但是网络那么大计算机那么多,对应的IP也那么多想要记住非常困难,这个时候就需要域名来代替IP地址。
- 第一次握手:建立连接时,客户端发送syn包(syn=x)到服务器,并进入SYN_SEND状态,等待服务器确认;
- SYN:同步序列编号(Synchronize Sequence Numbers)
- 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
- 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手.
- 完成三次握手,客户端与服务器开始传送数据
- 客户端进程发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN-WAIT-1(终止等待1)状态。 TCP规定,FIN报文段即使不携带数据,也要消耗一个序号。
- 服务器收到连接释放报文,发出确认报文,ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT(关闭等待)状态。TCP服务器通知高层的应用进程,客户端向服务器的方向就释放了,这时候处于半关闭状态,即客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接受。这个状态还要持续一段时间,也就是整个CLOSE-WAIT状态持续的时间。
- 客户端收到服务器的确认请求后,此时,客户端就进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文(在这之前还需要接受服务器发送的最后的数据)。
- 服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,FIN=1,ack=u+1,由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为seq=w,此时,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。
- 客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(时间等待)状态。注意此时TCP连接还没有释放,必须经过2∗∗MSL(最长报文段寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态。
- 服务器只要收到了客户端发出的确认,立即进入CLOSED状态。同样,撤销TCB后,就结束了这次的TCP连接。可以看到,服务器结束TCP连接的时间要比客户端早一些。
计算机网络的简单概述以及在浏览器中输入一个网址后如何执行相关推荐
- c++软件开发面试旋极面试题_经典软件开发面试题:浏览器中输入一个网址后发生了什么?...
经典软件开发面试题:浏览器中输入一个网址后发生了什么? 大家好, 这一期呢,我们来谈一个经典的面试题.这种题目是在浏览器中输入一个网址以后, 会显示一个网页,这期间到底发生了什么? 答案要求说的越 ...
- 当在浏览器中输入一个域名后,会发生什么
今天,去哪儿网Geely老师分享了他在校招时的一个面试题:当输www.qunar.com时发生了什么.(真不是做广告哈) 因为学的并没有很扎实,不能更深更广的分析这个问题,遂---百度一下,发现这篇文 ...
- 当我们在浏览器中输入一个URL后,发生了什么?
写在开头:这篇文章被我归入博客性能优化类别,是因为我认为如果我们要优化网站性能.提升用户体验,首要目标就是要知道用户在本地请求并加载你的网页的过程中,到底发生了什么,在此基础上我们才能更好的优化网页. ...
- 在浏览器中输入一个域名之后都发生了什么
当你在浏览器中打入www.baidu.com后,轻轻一敲回车百度输入框就展现在你面前,我们看似很简单很简单的一个操作,背后却有着超级复杂的过程. 其实网络传输跟我们平常说话有许多相似的地方,大脑组织语 ...
- 关于浏览器输入一个网址后页面经历的过程总结
浏览器进程 浏览器输入一个网址后的主流程 一.用户输入 根据以下规则,把用户输入的内容加上协议,合成为完整的 URL. 判断输入的关键字是搜索内容,还是请求的 URL 如果是搜索内容:使用浏览器默认的 ...
- 当你在浏览器中输入一个地址(一)——浏览器检查地址
浏览器是我们日常都会用的一个软件,那么,当你向浏览器的地址栏输入一个地址(URL)时,它背后究竟发生了哪些故事呢? 浏览器检查地址 1 检查地址的有效性 对于浏览器来说,一般可以支持两种地址的输入:I ...
- 当在浏览器地址栏输入一个URL后回车,将会发生的事情?
作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到的技术:像浏览器,HTTP,HTML,网络服务器,需求处理等等. 本文将更深入的研究当你输入一个网址 ...
- 在浏览器地址栏输入一个URL后回车,执行的全部过程
作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到的技术:像浏览器,HTTP,HTML,网络服务器,需求处理等等. 本文将更深入的研究当你输入一个网址 ...
- 当你在浏览器地址栏输入一个URL后回车,将会发生的事情?
之前和前辈交流,他问了我这样一个问题,自己一时没有答上来,今天可以研究了一下,看到了一篇很不错的博客,转载过来,供大家学习. 原文地址:http://blog.csdn.net/libin_1/art ...
- [IT]当你在浏览器地址栏输入一个URL后回车,将会发生的事情?
原文:What really happens when you navigate to a URL 作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到 ...
最新文章
- Python 中更优雅的环境变量设置方案
- jquery中一些容易忽略的方法
- J2EE和Java EE
- 对分查找的最多次数_Java数据结构与算法:多路查找树
- BZOJ 2115 [Wc2011] Xor ——线性基
- eclipse中linux打包,Eclipse中Maven打包程序并在Linux中运行
- mysql简单分表_mysql分区分表哪个好
- IDEA2019版最新配置SVN及上传教程-超详细图文详解
- linux 双网卡bond命令,Linux的双网卡绑定(即bond0)
- 微波工程基础_哈工大电子与信息工程—复试考试大纲
- 重新leetcode第2天——递归讲解合集
- 【E2EL5】A Year in Computer Vision中关于图像增强系列部分
- 如何找一个程序员做男朋友?
- SiamFC代码分析(architecture、training、test)
- wp文件转shp_MapGIS完美转shp攻略
- 新广告法违规词、敏感词在线检测工具 淘宝违规词检测、查询
- VUE | “面包屑”的原理
- 中南林业科技大学的计算机研究生分数线,2020中南林业科技大学研究生分数线(以及历年复试)...
- 001简谱的调号、拍号和情绪
- awk OFS问题说明
热门文章
- mysql pt kill脚本_mysql 案例 ~ pt-kill工具的使用
- 人机协作机器人发展趋势_人工智能非万能!智能安防机器人下一站:人机协作...
- WKWebView终极指南
- 计算机检索系统中 每一种文献特征,自考《档案文献检索》串讲资料(1)
- C++ OS 网络 数据库 (面试)
- 589. N叉树的前序遍历
- python后端和爬虫_【后端开发】python爬虫难学吗
- 想去机器学习初创公司做数据科学家?这些问题值得你三思!
- Hadoop中的一些基本操作
- 【ccpc网络赛】Tree and Permutation【1009】【树上+组合数学】