【计算机网络】计算机网络小课堂

计算机网络体系结构

五层协议的体系结构:应用层、运输层、网络层、数据链路层、物理层。

1. 应用层协议

常见的五种应用层协议:HTTP、FTP、SMTP、DNS、BT。

应用层协议名称

应用层协议描述

HTTP (HyperText Transfer Protocol)

超文本传输协议;Web应用(拉协议),即客户端(主机)从服务器获取数据资源;基于TCP协议

FTP 协议 (File Transfer Protocol)

文件传输协议;文件传输:客户端(主机)之间传文件,不涉及服务器(持有资源,不获取资源);基于TCP协议

SMTP (Simple Mail Transfer Protocol) 

简单邮件传输协议;电子邮件(推协议),即客户端(主机)只负责把文件发送出去;基于TCP协议

DNS (Domain Name System) 

域名系统;域名解析;基于UDP协议

BT (BitTorrent) 

内容分发协议;P2P应用:如果你要下载一个视频,可以从多个人那里一起下载,从每个人那里下载一部分视频,最后下载一个完整的视频

TelnetTelnet是一个通过创建虚拟终端提供连接到远程主机终端仿真的TCP/IP协议。这一协议需要通过用户名和口令进行认证,是Internet远程登陆服务的标准协议。应用Telnet协议能够把本地用户所使用的计算机变成远程主机系统的一个终端

2. 运输层协议

常见的运输层协议:TCP、UDP、HTTPS。

TCP协议

(1) 面向连接:客户端和服务器之间 一对一 连接。

(2) 可靠性高:TCP会为每一个字节按顺序编号,保证数据传输的有序性。

(3) 面向字节流:TCP从应用层接收报文是以字节的形式接收,并将其存入发送缓存中。每次发送时,可以从发送缓存中取出一个或多个字节,为它们加上一个首部,再进行发送。

注:一个字节有8位。

       首部最少20个字节,最多60个字节。

(4) 全双工通道:既能接受数据,也能发送数据。

UDP协议

(1) 无连接

(2) 不可靠

(3) 面向报文:UDP从应用层接收到一个完整的报文以后,直接为其加一个首部,便可以进行发送。

     UDP的首部只有8个字节,分别是:源端口 (2字节) +目的端口 (2字节) +长度 (2字节) +校验和 (2字节)

     源端口:一个主机有唯一的IP,一个IP有很多个端口,每次请求都会随机分配一个端口。

          端口和进程间的通信的概念:IP和端口二者其一不同,就是不同的进程。

          计算机网络中,进程间的通信是跨主机。

     长度:是 首部+报文 总共的长度,最少是8个字节,即报文是空。

     校验和:运输层必须要有校验功能——差错校验。

TCP 建立连接的三次握手

第一次握手:SYN=1,表明这是一个SYN报文段,用于建立连接,不能携带数据,还要消耗掉一个序号 x 。seq=x,表明客户端A 发送报文的初始化序号为 x 。因为这是第一次发送报文,客户端 A 并没有收到服务器 B 的报文,所以ACK=0,不需要发送确认号 ack 。

第二次握手:SYN=1,表明这是一个SYN报文段,用于建立连接,不能携带数据,还要消耗掉一个序号 y 。seq=y,表明服务器 B 发送报文的初始化序号为 y 。此时,服务器 B 就需要发送确认号了,所以ACK=1,ack = x + 1 。

第三次握手:因为不再是SYN报文段,所以SYN=0,可以携带数据。ACK=1,ack = y + 1,seq = x + 1。

注:初始序号 seq 是随机生成的,范围在[ 0 ~ 2^32 ] 之间。那么问题来了,为什么是2^32呢?因为序号 seq 占用四个字节,每一个字节有8位,则有4X8=32位,每位有0/1两种可能,故是2^32。

为什么SYN和FIN要消耗掉一个序号?

因为 SYN 和 FIN 信号都是需要 acknowledgement 的,也就是你必须回复这个信号,如果它不占用一个字节的话,要如何判断你是回复这个信号还是回复这个信号之前的包呢?

比如:如果 FIN 信号不占用一个字节,回复 FIN 的 ack 包就可能被误认为是 回复之前的数据包被重新发了一次,第二次挥手无法完成,连接也就无法正常关闭了。

为什么是三次握手,而不是两次握手?

为了不浪费资源。

比如说,A 向 B 发送了第一次请求,B 也回应了 A ,向 A 发送了一次请求。但是,B 发送的报文因为某种原因丢失了,导致 A 没有收到 B 的报文。此时,A 会一直等着接收 B 的报文( B 以为自己的报文发送成功了,也一直等着接收 A 的报文),直到请求超时,A 会再发送第一次请求,要求重新建立连接。然后,成功建立连接之后,A 和 B 终于可以愉快地进行数据传输了。那么,之前没有成功的那次连接呢,很明显浪费掉了,双方都在等待,占用着 B 的资源,却没有进行数据传输。所以需要 A 再向 B 发送一个报文,保证 A 收到了 B 发送过来的报文,这也是为什么第三次握手可以携带数据了,毕竟第三次握手起到的是一个确认连接成功的作用。

3. 网络层协议

ICMP(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

END

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值