1. TCP/IP 分层

应用层:ftp, e-mail,http,dns
传输层:tcp, udp
网络层:IP, ARP
链路层:驱动程序和网卡,交换机

OSI分层

第7层 应用层(Application Layer)
提供为应用软件而设的界面,以设置与另一应用软件之间的通信。例如: HTTP,HTTPS,FTP,TELNET,SSH,SMTP,POP3等。

第6层 表示层(Presentation Layer)
把数据转换为能与接收者的系统格式兼容并适合传输的格式。

第5层 会话层(Session Layer)
负责在数据传输中设置和维护电脑网络中两台电脑之间的通信连接。

第4层 传输层(Transport Layer)
把传输表头(TH)加至数据以形成数据报。传输表头包含了所使用的协议等发送信息。例如:传输控制协议义(TCP) 等。

第3层 网络层(Network Layer)
决定数据的路径选择和转寄,它网络表头(NH)加至数据报,以形成分组。网络表头包含了网络数据。例如:互联网协议(IP) 等。

第2层 数据链路层(Data Link Layer)
负责网络寻址、错误侦测和改错。当表头和表尾被加至数据包时,会形成了帧。数据链表头(DLH)是包含了物理地址和错误侦测及改错的方法。数据链表尾(DLT)是一串指示数据包末端的字符串。例如以太网、无线局域网(Wi-Fi)和通用分组无线服务(GPRS)等。

第1层 物理层(Physical Layer) 
在局部局域网络上传送帧,它负责管理电脑通信设备和网络媒体之间的互通。包括了针脚、电压、线缆规范、集线器、中继器、网卡、主机适配器等

2. TCP 和 UDP

TCP:面向连接、传输可靠(保证数据正确性,保证数据顺序)、用于传输大量数据(流模式)、速度慢,建立连接需要开销较多(时间,系统资源)。
UDP:面向非连接、传输不可靠(不保证数据到达的顺序)、用于传输少量数据(数据包模式)、速度快。
详细解释: 
    TCP为两台主机提供高可靠性的数据通信。他所作的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。由于运输层提供了高可靠性的端到端通信,因此应用层可以忽略所有这些细节。TCP的特点:面向连接的传输层协议,点对点的连接,可靠,全双工通信,面向字节流。
    UDP则为应用层提供一种非常简单的服务。它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。任何必须的可靠性必须由应用层来提供。

3.1 TCP 的三次握手

注意一个TCP发送包的首部为:16bit 源端口号16bit 目的端口号32 位序列号(该包的编号)32位确认序列号(用以接收方回信时的序号),其他的标志位:确认位ACK,推送位PSH,同部位SYN,终止位FIN
第一次握手:建立连接时,客户端发送syn包和一个随机序列号seq=x到服务器,并进入SYN_SEND状态,等待服务器进行确认。(syn,同步序列编号)。
第二次握手,服务器收到syn包,必须确认客户的SYN,然后服务器发送一个ACK=1, SYN=1, seq=y的随机数和ack=x+1的确认数的包发送回去。
第三次握手是客户端收到服务器端的SYN+ACK包,然后向服务器端发送确认包ack=y+1, seq=x+1, ACK=1,客户端和服务器端进入ESTABLISHED状态,完成三次握手

3.2. TCP 的四次挥手

 

第一次:首先客户端主动发送Fin=1,seq=u,它等于前面已传送过去的最后一个字节的序号加1.这是A进入FIN-WAIT-1状态,等待B的确认。
第二次:B收到连接后立即发出确认,确认号是ack=u+1,而这个报文段自己的序号是v,等于B前面已传送过的数据的最后一个字节的序号加1.然后B即进入CLOSE-WAIT状态。因而A到B的这个链接现在已经断开了,这时的TCP连接处于半关闭状态,即A已经没有数据需要发送了。但B若发送数据,A还是要接受的。A收到来自B的确认之后就进入了FIN-WAIT-2状态等待B发出连接释放报文段。
第三次:若B已经没有要向A发送数据,其应用进程就通知TCP释放连接。这是B发出的连接释放报文段必须使用FIN=1.现在假定B的序号为w,B还必须重复上次已发送过的确认号ack=u+1.这时B就进入了LAST-ACK状态,等待A确认。
第四次:A在收到B的连接释放之后必须对此发出确认。在确认号中把ACK置1,确认号ack=w+1,而自己的序号是seq=u+1。接着A进入TIME-WAIT状态。为了保证B可以收到确认释放报文段。

【问题1】为什么连接的时候是三次握手,关闭的时候却是四次握手?

答:因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,”你发的FIN报文我收到了”。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。

【问题2】为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态?

答:虽然按道理,四个报文都发送完毕,我们可以直接进入CLOSE状态了,但是我们必须假象网络是不可靠的,有可以最后一个ACK丢失。所以TIME_WAIT状态就是用来重发可能丢失的ACK报文。

4访问网站的过程

1.DNS域名解析:浏览器缓存、系统缓存、路由器、ISP的DNS服务器、根域名服务器。把域名转化成IP地址。
2.与IP地址对应的服务器建立TCP连接,经历三次握手:SYN,ACK、SYN,ACK
3.以get,post方式发送HTTP请求,get方式发送主机,用户代理,connection属性,cookie等
4.获得服务器的响应,显示页面

从TCP/IP协议看访问yahoo网站的过程

应用程序阶段:妳打开浏览器,在浏览器上面输入网址列,按下 [Enter]。此时网址列与相关数据会被浏览器包成一个数据, 并向下传给 TCP/IP 的应用层;

应用层:由应用层提供的 HTTP 通讯协议,将来自浏览器的数据报起来,并给予一个应用层表头,再向传送层丢去;

传送层:由于 HTTP 为可靠联机,因此将该数据丢入 TCP 封包内,并给予一个 TCP 封包的表头,向网络层丢去;

网络层:将 TCP 包裹包进 IP 封包内,再给予一个 IP 表头 (主要就是来源与目标的 IP 啰),向链结层丢去;

链结层:如果使用以太网络时,此时 IP 会依据 CSMA/CD 的标准,包裹到 MAC 讯框中,并给予 MAC 表头,再转成位串后, 利用传输媒体传送到远程主机上。

等到 Yahoo 收到你的包裹后,在依据相反方向拆解开来,然后交给对应的层级进行分析,最后就让 Yahoo 的 WWW 服务器软件得到你所想要的数据,该服务器软件再根据你的要求,取得正确的资料后,又依循上述的流程,一层一层的包装起来, 最后传送到你的手上

5封装

 

6 http和https的区别与联系

HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。

HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。

简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。

HTTPS和HTTP的区别主要如下:

1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

7 http请求

面试前紧急补货——网络相关推荐

  1. 面试前该做哪些准备?

    要知道数据分析师的日常工作适合业务紧密结合的,数据分析师每天要关注大量的数据指标 数据分析=业务分析+数据处理手段(工具)=量化业务--发现问题 当面试官提出关于业务方面的问题时,更多的是需要大家快速 ...

  2. 春招/秋招面试前必看一文。如何找到 BAT 的实习机会。找实习中的一些困惑,如何解决?。浅谈秋招。

    春招/秋招面试前必看一文 春节过完,不管是大三/研二.还是大四/研三,就要投入到最激烈的春招当中去了,各大公司将会正式招聘,由元旦期间拉开序幕(1 - 2 月),到彻底的进入白热化阶段(3 - 4 月 ...

  3. 刷爆技术圈的《知识图谱》终于补货了,最后 968 份,低至 2 折,抢完不补!...

    初学 Python 的你是否遇到过: 想要学习,却不知道从何开始? 没有时间啃书本?实操中遇到操作盲点? 知识点堆砌,学了一堆还是找不到工作 这其实是所有人接触 Python 时,都会遇到的问题. 需 ...

  4. 面试前,我们要复习多少Redis知识点?

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"加群"获取公众号专属群聊入口 来源:rrd.me/gkeep 今天,我不自量力的面试了 ...

  5. AI驱动的京东端到端补货技术建设实践

    导读:自动化是嵌入到整个智能供应链Y的基因里去的,我们服务的一个愿景是希望通过自动化技术实现供应链全链条的降本提效.本文将分享京东如何利用AI驱动端到端补货建设,包括以下几大方面内容: 京东智能供应链 ...

  6. 百丽季燕利:从补货场景,看企业协同在线|数字思考者50人

    图片来源:视觉中国 ▎对于传统大型组织而言,从战略到落地,关系到经营管理和运营执行的千万次决策,需要跨多个部门.多个不同岗位去执行落地,这其中协同的难度会随着组织的规模.业务类型.结构.层级.参与的人 ...

  7. 面试Java后端开发的感受:如果就以平时项目经验来面试,通过估计很难——再论面试前的准备...

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:hsm_computer 链接:https://www.cn ...

  8. 「翻译」SAP零售预测和补货–简要概述

    SAP零售预测和补货–简要概述 总体目标和适用范围 SAP Forecasting and Replenishment(F&R)是专门为零售商门店和配送中心的高效补货而创建的解决方案.其主要目 ...

  9. 计算机考研前沿知识怎么准备,2016考研复试面试前需充足准备9大内容

    2016考研复试交流群:198561567 考研是自己跟自己的较量,是对自己学习能力.心态调节能力等各方面能力的综合考验.谁坚持到了后,谁就是赢家,不要在这一刻掉链子了.下面是中公考研分享的考研复试面 ...

最新文章

  1. 为放大器模拟输入模块提供可靠的输入过电压保护
  2. 2015.11.3 RichBox改变若干文本颜色
  3. 黄仁勋的“数据梦” 英伟达豪掷69亿美金虎口夺食
  4. C#复制图片_并重命名
  5. 好的开始是成功的一半:网页优化之标题篇
  6. Hack Into Linux Packet Schedulers
  7. 合并两个有序数组python_Python3合并两个有序数组代码实例
  8. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1085:球弹跳高度的计算
  9. 智能会议系统(32)---WebRTC学习之三:录音和播放
  10. 看到小童鞋s茁壮成长
  11. 使用Emit的时候类型XXX尚未完成
  12. 62.不同的路径(力扣leetcode) 博主可答疑该问题
  13. SVN汉化失败的原因及解决方案(通过SVN官网下载SVN和相应的汉化包)
  14. How far away ? HDU - 2586 trajan算法lca
  15. 全国高中数学联赛——组合
  16. 关于 CVE-2021-44228 Log4j2 漏洞的相关应对汇总说明(包含中英文客户公告)
  17. java 和gps 建立连接_GPS 连接与定位
  18. yaml存储到文件服务器,通过编写k8s的资源清单yaml文件部署gitlab服务
  19. 关于defer 的用法
  20. python排序输出人名,005_015 Python 人名按字母排序,首字母分组

热门文章

  1. 阿里云服务器被流量攻击怎么办
  2. Java免费获取实时汇率API
  3. 我的2020年度总结 “既往不恋,纵情向前”
  4. 09组团队项目-Alpha冲刺-3/6
  5. 01时态(1):疑问句
  6. 两台电脑共享鼠标键盘
  7. matlab相位增量法图,基于相位增量的相位优化快速算法分析
  8. 需求挖掘的十三种方法
  9. 打印ASCII码 c++
  10. Jenkins骚操作第四章构建maven项目和Pipeline流水线项目构建