计算机网络学习笔记

OSI七层模型:

每一层的协议如下:

物理层:RJ45、CLOCK、IEEE802.3    (中继器,集线器,网关)

数据链路:PPP、FR、HDLC、VLAN、MAC  (网桥,交换机)

网络层:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP、 (路由器)

传输层:TCP、UDP、SPX

会话层:NFS、SQL、NETBIOS、RPC

表示层:JPEG、MPEG、ASII

应用层:FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS

 

1、物理层

物理层协议:RJ45、CLOCK、IEEE802.3    (中继器,集线器,网关)

通过物理手段把电脑连接起来,它主要规定了网络的一些电气特性,作用是负责传送01的电信号。物理手段就是光缆、电缆、双绞线、无线电波(WiFi等。

作用通过媒介传输比特,确定机械及电气规范(比特Bit

2、数据链路层

数据链路:PPP、FR、HDLC、VLAN、MAC  (网桥,交换机)

将比特组装成帧,进行点到点的传递(帧Frame)。

1)以太网协议(Ethernet

以太网规定,一组电信号构成一个数据包,叫做帧(Frame;每一帧分成两个个部分:标头(Head)和数据(Data),标头包含数据包的一些说明项,比如发送者、接受者、数据类型等等。数据链路层的数据包就叫以太网数据包

2MAC地址(物理地址)--48

以太网规定,连入网络的所有设备,都必须具有网卡接口。数据包必须是从一块网卡,传送到另一块网卡,网卡的地址,就是数据包的发送地址和接受地址,也叫MAC地址。

每块网卡出厂的时候,都有全世界独一无二的MAC地址,长度是48位的二进制,通常用12个十六进制数表示。

6个十六进制是厂商编号,后6个是该厂商的网卡流水号

3)广播(只在发送者所在的局域网内广播)

以太网数据包必须知道接收方的MAC地址,然后才能发送。

以太网采用了一种很"原始"的广播式的方式,它不是把数据包准确送到接收方,而是向本网络(局域网)内所有计算机发送,让每台计算机自己判断,是否为接收方计算机收到这个数据包之后,会读取这个数据包的标头,找到其中接收方(目标方)的MAC地址,然后与自身的MAC地址进行比对,如果两者相同,说明就是要发给自己的,然后接受这个数据包并做出进一步的处理,否则丢弃这个包。

 

3、网络层

网络层:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP、 (路由器)

负责数据包从源到宿的传递和网际互连(包PackeT

一套新的地址,使我们能够区分哪些计算机属于同一个子网,这个套机制就叫做网络地址,也就是“IP地址

1IP协议(网络地址协议)(IP地址—32位)

互联网上的每一台计算机,都会被分配到一个IP地址,这个地址由两部分组成,前一部分代表网络,后一部分代表主机(又称终端系统,end system

处于同一个子网络的电脑,它们IP地址的网络部分必定是相同的

 

IP地址的分类

A类地址:以0开头,第一个字节范围:0~1271.0.0.0 - 126.255.255.255);

B类地址:以10开头,第一个字节范围:128~191128.0.0.0 - 191.255.255.255);

C类地址:以110开头,第一个字节范围:192~223192.0.0.0 - 223.255.255.255);

10.0.0.0—10.255.255.255172.16.0.0—172.31.255.255 192.168.0.0—192.168.255.255。(Internet上保留地址用于内部)

 

2)子网掩码

所谓"子网掩码",就是表示子网络特征的一个参数。它在形式上等同于IP地址,也是一个32位二进制数字,它的网络部分全部为1,主机部分全部为0

判断,任意两个IP地址是否处在同一个子网络:

将两个IP地址与子网掩码分别进行AND运算(两个数位都为1,运算结果为1,否则为0),然后比较结果是否相同,如果是的话,就表明它们在同一个子网络中,否则就不是。

3)路由、路由器、网关、将换机

同一个子网,采用广播的方式发送数据包

不同一个子网,采用路由的方式发送数据包

1、路由(一种行为动作)(routing

就是通过互联的网络把信息从源地址传输到目的地址的活动。路由引导分组转送,经过一些中间的节点后,到它们最后的目的地。

原地址和目标地址是在两个不同的子网中的

2、路由器(Router

路由器连接两个或多个网络并提供路由功能。

3、网关(Gataway

网络层使用的路由器称为网关,现在通常指的网关就是路由器的IP

需要强调一点,虽然路由器上面有MAC地址和IP地址,但它并不能通过MAC地址工作,必须通过IP寻址。因此它是工作在网络层的设备。

4、网络交换机

是一个扩大网络的器材,能为子网中提供更多的连接端口,以便连接更多的电脑。

与路由器的区别:

  1. 工作层次不同

交换机主要工作在数据链路层(第二层)
路由器工作在网络层(第三层)。

  1. 转发依据不同

交换机转发所依据的对象是:MAC地址。(物理地址)
路由转发所依据的对象是:IP地址。(网络地址)

  1. 主要功能不同

交换机主要用于组建局域网,连接同属于一个(广播域)子网的所有设备,负责子网内部通信(广播)。
路由主要功能是将由交换机组好的局域网相互连接起来,或者将他们接入Internet

 

4ARP协议(地址解析协议)

ARP协议将IP地址映射为以太网地址。

建立TCP连接与ARP的关系

应用接受用户提交的数据,触发TCP建立连接,TCP的第一个SYN报文通过connect函数到达IP层,IP层通过查询路由表:

  如果目的IP和自己在同一个网段

  当IP层的ARP高速缓存表中存在目的IP对应的MAC地址时,则调用网络接口send函数(参数为IP Packet和目的MAC))将数据提交给网络接口,网络接口完成Ethernet Header + IP + CRC的封装,并发送出去;

  当IP层的ARP高速缓存表中存在目的IP对应的MAC地址时,则IP层将TCPSYN缓存下来,发送ARP广播请求目的IPMAC,收到ARP应答之后,将应答之中的<IP地址,对应的MAC>对缓存在本地ARP高速缓存表中,然后完成TCP SYNIP封装,调用网络接口send函数(参数为IP Packet和目的MAC))将数据提交给网络接口,网络接口完成Ethernet Header + IP + CRC的封装,并发送出去;。

  如果目的IP地址和自己不在同一个网段,就需要将包发送给默认网关,这需要知道默认网关的MAC地址:

  IP层的ARP高速缓存表中存在默认网关对应的MAC地址时,则调用网络接口send函数(参数为IP Packet和默认网关的MAC)将数据提交给网络接口,网络接口完成Ethernet Header + IP + CRC

IP层的ARP高速缓存表中存在默认网关对应的MAC地址时,则IP层将TCPSYN缓存下来,发送ARP广播请求默认网关的MAC,收到ARP应答之后,将应答之中的<默认网关地址,对应的MAC>对缓存在本地ARP高速缓存表中,然后完成TCP SYNIP封装,调用网络接口send函数(参数为IP Packet和默认网关的MAC)将数据提交给网络接口,网络接口完成Ethernet Header + IP + CRC的封装,并发送出去。

 

在主机、交换机、路由器上都会有ARP缓存表。

SYN:同步序列编号(TCP/IP建立连接时使用的握手信号

CRC:循环冗余校验

 

4、传输层

传输层:TCP、UDP、SPX

提供端到端的可靠报文传递和错误恢复(段Segment)。

传输层是建立端口到端口之间的通信,更具体一点,也就是程序和程序之间的通信,或者进程间通信

而网络层是建立“主机到主机”的通信

1)端口号(16位)

当一个数据包从网上发送过来的时候,我们需要一个参数来区分,他到底是提供哪个进程使用的——这个参数就叫做端口号,他其实就是每一个使用网卡的程序的编号。

端口是065535之间的一个整数,正好16个二进制。0~1023的端口被系统占用,用户只能使用大于1023的端口。

HTTP协议默认使用80端口,8080是用来访问代理服务的。

2Socket(套接字)

进程间通信分为两种:

一种是主机内部(或终端内部)进程间通信,这个由终端或主机上的操作系统决定,比如在Android系统上面进程间通信就是AIDL

另一种是跨主机进程间通信或者网络进程间通信,也叫“socket通信

socket本质是编程接口(API)TCP/IP的封装TCP/IP只是一个协议栈,必须要具体实现,同时还要提供对外的操作接口(API),这就是Socket接口。通过Socket,我们才能使用TCP/IP协议,因此有了一系列我们知道的函数接口——connectacceptsendreadwrite等。

Socket连接过程分为三个步骤:服务器监听,客户端请求,连接确认。

3TCP/UDP协议

主要作用就是在应用层的数据包标头加上端口号(或者在IP协议的数据包中插入端口号)。

 

TCP三次握手和四次挥手的全过程

三次握手:

第一次握手:客户端发送syn(syn=x)到服务器,并进入SYN_SEND状态,等待服务器确认;

第二次握手:服务器收到syn包,必须确认客户的SYNack=x+1),同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYNACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。

四次挥手

与建立连接的三次握手类似,断开一个TCP连接则需要四次挥手

第一次挥手:主动关闭方发送一个FIN,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方:我已经不会再给你发数据了(当然,在fin包之前发送出去的数据,如果没有收到对应的ack确认报文,主动关闭方依然会重发这些数据),但是,此时主动关闭方还可以接受数据。

第二次挥手:被动关闭方收到FIN包后,发送一个ACK给对方,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号)。
第三次挥手:被动关闭方发送一个FIN,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发数据了。
第四次挥手:主动关闭方收到FIN后,发送一个ACK给被动关闭方,确认序号为收到序号+1,至此,完成四次挥手。

http://images0.cnblogs.com/blog2015/621032/201508/092017231747399.jpg

TCP为什么会采用三次握手?
为了防止失效的连接请求报文段突然又传送到主机B,因而产生错误。失效的连接请求报文段是指:主机A发出的连接请求没有收到主机B的确认,于是经过一段时间后,主机A又重新向主机B发送连接请求,且建立成功,顺序完成数据传输。考虑这样一种特殊情况,主机A第一次发送的连接请求并没有丢失,而是因为网络节点导致延迟达到主机B,主机B以为是主机A又发起的新连接,于是主机B同意连接,并向主机A发回确认,但是此时主机A根本不会理会,主机B就一直在等待主机A发送数据,导致主机B的资源浪费。

 

四次挥手释放连接,为什么要有TIME_WAIT状态?

1).为了保证A发送的最后一个ACK报文段能够到达B。这个ACK报文段有可能丢失,因而使处在LAST-ACK状态的B收不到对已发送的FINACK报文段的确认。B会超时重传这个FINACK报文段,而A就能在2MSL时间内收到这个重传的ACK+FIN报文段。接着A重传一次确认。

2).就是防止上面提到的已失效的连接请求报文段出现在本连接中,A在发送完最后一个ACK报文段后,再经过2MSL,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失。

 

TCPUDP的区别?

TCP提供面向连接的、可靠的数据流传输,而UDP提供的是非面向连接的、不可靠的数据流传输。

TCP传输单位称为TCP报文段,UDP传输单位称为用户数据报。

TCP注重数据安全性,UDP数据传输快,因为不需要连接等待,少了许多操作,但是其安全性却一般。

 

TCP对应的协议和UDP对应的协议

 

TCP对应的协议:

1 FTP:定义了文件传输协议,使用21端口。

2 Telnet:一种用于远程登陆的端口,使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务。

3 SMTP:邮件传送协议,用于发送邮件。服务器开放的是25号端口。

4 POP3:它是和SMTP对应,POP3用于接收邮件。POP3协议所用的是110端口。

5HTTP:是从Web服务器传输超文本到本地浏览器的传送协议。

 

UDP对应的协议:

1 DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。

2 SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。

3 TFTP(Trival File Tran敏感词er Protocal),简单文件传输协议,该协议在熟知端口69上使用UDP服务。

 

5、应用层

应用层:FTPDNSTelnetSMTPHTTPWWWNFS

"应用层"的作用,就是规定应用程序的数据格式。这是最高的一层,直接面对用户。

HTTPHTTPS的区别:

HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全

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

HTTPSHTTP的区别主要如下:

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

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

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

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值