《剑指Java面试-Offer直通车》--计算机网络

目录

一、网络基础知识讲解

OSI开放式互联参考模型

TCP/IP

二、TCP三次握手

传输控制协议TCP简介

TCP报文头

TCP三次握手

三、TCP四次挥手

四、TCP和UDP的区别

UDP的特点

TCP和UDP的区别

TCP和UDP适用场景

五、流量控制和拥塞控制

RTT和RTO

TCP的滑动窗口(流量控制)

滑动窗口的基本原理

TCP会话的发送方

TCP会话的接收方

拥塞控制

六、HTTP简介

超文本传输协议HTTP主要特点

Http1.0 1.1 2.0的区别?

客户端请求消息(Request)

服务端响应消息(Response)

请求响应的步骤

在浏览器地址栏键入URL,按下回车之后经历的流程

常见的HTTP状态码

Restful API

GET请求和POST请求的区别

缓存

强缓存和协商缓存

Cookie和Session的区别

七、HTTP和HTTPS的区别

八、Socket相关

推荐资料


一、网络基础知识讲解

  • OSI开放式互联参考模型

第1层 物理层 

首先解决两台物理机之间的通信需求,具体就是机器A往机器B发送比特流,机器B能收到比特流。

物理层主要定义了物理设备的标准,如网线的类型,光纤的接口类型,各种传输介质的传输速率。主要作用是传输比特流(0101二进制数据),将比特流转化为电流强弱传输,到达目的后再转化为比特流,即常说的数模转化和模数转换。这层数据叫做比特网卡工作在这层。

第2层 数据链路层

在传输比特流的过程中,会产生错传、数据传输不完整的可能。

数据链路层定义了如何格式化数据进行传输,以及如何控制对物理介质的访问。通常提供错误检测和纠正,以确保数据传输的准确性。本层将比特数据组成交换机工作在这层,对帧解码,并根据帧中包含的信息把数据发送到正确的接收方。

第3层 网络层

随着网络节点的不断增加,点对点通讯需要通过多个节点,如何找到目标节点,如何选择最佳路径成为首要需求。

网络层主要功能是将网络地址转化为对应的物理地址,并决定如何将数据从发送方路由到接收方。网络层通过综合考虑发送优先权、网络拥塞程度、服务质量以及可选路由的花费来决定从一个网络中节点A到另一个网络中节点B的最佳路径。由于网络层处理并智能指导数据传送,路由器连接网络隔断,所以路由器属于网络层。此层的数据称之为数据包。本层需要关注的协议TCP/IP协议中的IP协议

第4层 传输层

随着网络通信需求的进一步扩大,通信过程中需要发送大量的数据,如海量文件传输,可能需要很长时间,网络在通信的过程中会中断很多次,此时为了保证传输大量文件时的准确性,需要对发送出去的数据进行切分,切割为一个一个的段落(Segement)发送,其中一个段落丢失是否重传,段落是否按顺序到达,是传输层需要考虑的问题。

传输层解决了主机间的数据传输,数据间的传输可以是不同网络,并且传输层解决了传输质量的问题。传输协议同时进行流量控制,或是基于接收方可接收数据的快慢程度规定适当的发送速率。除此之外,传输层按照网络可处理的最大尺寸将较长的数据包进行强制分割,例如以太网无法接收大于1500字节的数据包,发送方节点的传输层将数据分割成较小的数据片并编号,以便数据到达接收方节点的传输层时能以正确的顺序重组,该过程称为排序。传输层需要关注的协议有TCP/IP协议中的TCP协议和UDP协议

第5层 会话层

自动收发包,自动寻址。

会话层作用是建立和管理应用程序间的通信。

第6层 表示层

Linux给WIndows发包,不同系统语法不一致,如exe不能在Linux下执行,shell不能在Windows不能直接运行。于是需要表示层。

解决不同系统之间通信语法问题,在表示层数据将按照网络能理解的方案进行格式化,格式化因所使用网络的不同而不同。

第7层 应用层

规定发送方和接收方必须使用一个固定长度的消息头,消息头必须使用某种固定的组成,消息头中必须记录消息体的长度等信息,方便接收方正确解析发送方发送的数据。应用层旨在更方便应用从网络中接收的数据,重点关注TCP/IP协议中的HTTP协议

从应用层开始对要传输的数据头部进行处理,加上本层的一些信息。最终物理层通过以太网、电缆等介质将数据解析成比特流在网络中传输,数据传递到目标地址,自底而上的将先前对应的头部解析分离出来。

参考:OSI参考模型各层的主要功能?

  • TCP/IP

OSI的实现“TCP/IP”

OSI七层网络模型

TCP/IP四层概念模型  

对应网络协议

应用层(Application)

应用层

HTTP、TFTP, FTP, NFS, WAIS、SMTP

表示层(Presentation)

Telnet, Rlogin, SNMP, Gopher

会话层(Session)

SMTP, DNS

传输层(Transport)

传输层

TCP, UDP

网络层(Network)

网络层

IP, ICMP, ARP, RARP, AKP, UUCP

数据链路层(Data Link)

数据链路层

FDDI, Ethernet, Arpanet, PDN, SLIP, PPP

物理层(Physical)

IEEE 802.1A, IEEE 802.2到IEEE 802.11

IP、TCP、UDP、HTTP等都属于TCP/IP协议,TCP/IP泛指这些协议。

OSI模型注重通信协议必要的功能;TCP/IP更强调在计算机上实现协议应该开发哪种程序。

二、TCP三次握手

IP协议是无连接的通信协议,不会占用两个正在通信的计算机之间的通信线路。降低了对网络线路的需求,每条线同时满足许多不同计算机之间的通信需要。通过IP,消息或其他数据被分割为较小的独立的包,并通过因特网在计算机之间传送。IP负责将每个包路由至目的地。IP协议没有确认包是否按顺序发送,或包是否被破环,因此IP数据包是不可靠的。需要它的上层协议做出控制。

  • 传输控制协议TCP简介

1)面向连接的、可靠的、基于字节流的传输层通信协议

2)将应用层的数据流分割成报文段并发送给目标节点的TCP层

3)数据包都有序号,对方收到则发送ACK确认,未收到则重传

4)使用校验和来检验数据在传输过程中是否有误

参考:百度百科_TCP_简介

应用层向TCP层发送数据流,然后TCP把数据流分区成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传输单元MTU的限制)。之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。TCP为了保证不发生丢包,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的包发回一个相应的确认ACK;如果发送端实体在合理的往返时延RTT内未收到确认,那么对应的数据包就被假设为已丢失将会被进行重传。TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和。

参考:TCP分段与IP分片

  • TCP报文头

端口:两个进程在计算机内部进行通信,有管道、内存共享、信号量、消息队列等方法。两个进程通信最基本的前提是唯一标识一个进程,通过唯一标识找到对应的进程。在本地进程通信中可以通过pid,但pid只在本地唯一。如果把两个进程放到两台计算机通信,pid实现不了。解决这个问题的方法就是在传输层使用协议端口号,简称端口。IP地址可以唯一标识主机,TCP协议和端口号可以唯一标识主机中的一个进程,利用IP地址+协议+端口号唯一标识去标识网络中的一个进程,这种唯一标识的模式称为Socket。

seq序号:占4字节,TCP连接中传送的字节流中的每个字节都按顺序编号。例如:一段报文的序号字段值是107,携带的数据是100个字段,下一个报文段序号从107+100=207开始。

ack确认号:4个字节,是期望收到对方下一个报文段的第一个数据字节的序号。例如:B收到A发送的报文,其序号字段是301,数据长度是200字节,表明B正确收到A发送的到序号500为止的数据(301+200-1=500),B期望收到A下一个数据序号是501。B发送给A的确认报文段中把ack确认号置为501。

数据偏移:头部有可选字段,长度不固定,指出TCP报文段的数据起始处距离报文段的起始处有多远。

保留:保留今后使用的,被标为1。

控制位:由8个标志位组成。每个标志位表示一个控制功能。

其中主要的6个:

URG紧急指针标志,为1表示紧急指针有效,为0忽略紧急指针。

ACK确认序号标志为1表示确认号有效,为0表示报文不含确认信息,忽略确认号字段。上面的确认号是否有效就是通过该标识控制的。

PSHpush标志,为1表示带有push标志的数据,指示接收方在接收到该报文段以后,应尽快将该报文段交给应用程序,而不是在缓冲区排队。

RST重置连接标志,重置因为主机崩溃或其他原因而出现错误的连接,或用于拒绝非法的报文段或非法的连接。

SYN同步序号,用于建立连接过程,在连接请求中SYN=1和ACK=0表示该数据段没有使用捎带的确认域,连接应答捎带一个确认即SYN=1和ACK=1。

FIN终止标志,用于释放连接,为1时表示发送方没有发送了。

窗口:滑动窗口大小,用来告知发送端接收端缓存大小,以此控制发送端发送数据的速率,从而达到流量控制。

校验和:奇偶校验,此校验和是对整个的TCP报文段(包括TCP头部和TCP数据),以16位进行计算所得,由发送端计算和存储,接收端进行验证。

紧急指针:只有控制位中的URG为1时才有效。指出本报文段中的紧急数据的字节数。

选项:其长度可变,定义其他的可选参数。

  • TCP三次握手

当应用程序希望通过TCP与另一个应用程序通信时,会发送一个通信请求,这个请求必须发送到一个确切的地址,双方握手之后,TCP建立一个全双工的通信(计算机A能给B发送信息,在发送信息的同时B也能给A回发信息。半双工通信:双向交替通信,即通信的双方都可以发送信息,但不能双方同时发送和接收),这个通信将占用两个计算机之间的通信线路,直到它被一方或双方关闭为止。握手即为TCP三次握手。

首先假设A和B首次通信,客户端和服务器端处于CLOSED的状态,假设主动打开连接的是客户端,被动打开连接的是服务器端。TCP服务器进程先创建传输控制块TCB,时刻准备接收其他客户进程发送的连接请求,此时服务端进入Listen即监听状态。TCP客户端进程创建传输控制块TCB,向服务器发出连接请求报文,TCP请求报文中的同步序号SYN=1&#

  • 24
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值