HTTP、FTP、SMTP、Telnet等等协议,哦!那个HTTP协议啊就是访问 页用的那个协议啊然后那个······其实······你懂得,我们应该从实际来了解他,理解 络协议的作用与功能,然后再从根本来看他是具体怎么实现的。我们可以先从HTTP、FTP、DHCP、DNS、ARP等常见协议开始入手了解它是如何工作的,然后照着这个态度再去深入了解其他的协议。先不多扯了进入正题。
一、什么是TCP/IP/strong>
二、OSI参考模型和TCP/IP参考模型
IP世界是由通信实体过程的,而通信实体,是要分层的。分层的好处在于:
1、各层之间是独立的。
2、灵活性好。
3、结构上可分割开。
4、易于实现和维护。
5、能促进标准化工作。
所以通信实体必须分出层次,以保证各种 络技术能和谐地共存和良好地配合,并不断激励技术创新。所以在1984年,国际标准化组织(ISO)建立了一套非常抽象的分层结构,这就是著名的ISO/OSI(国际标准化组织的开发 络架构),这对我们分析 络通信是非常有帮助的。
对比ISO/OSI的七层结构,读者会奇怪了:怎么没有表示层和会话层了呢确,在TCP/IP参考模型中这两层并不是必需的。其中还有个四层模型的说法数据链路层与物理层表示成 络接口层。TCPIP体系结构最核心的部分就是上面三层:应用层、传输层、 络层。
(1) 络接口层:TCP/IP并没有严格定义该层,它只是要求能够提供给其上层—– 络层的一个访问接口,以便在其上传递IP分组。由于这一层次未被定义,所以其具体的实现方法将随着 络类型的不同而不同。以太 是IP通信中数据链路层最常见的形式,除此之外还有PPP、HDLC等10Gbit/s以下的以太 一般应用于局域 ,而PPP、HDLC则应用于广域 居多。
(2) 络层:俗称IP层,它处理机器之间的通信。IP是一个不可靠的、无连接协议,它接收来自传输层的请求,传输某个具有目的地址信息的分组。IP负责给互联 的每一台计算机或者终端分配一个地址,并将信息以IP包的形式传送到正确的目的地。这是TCP/IP的核心。IP协议族中最关键的是路由协议。
(3)传输层:传输层控制协议(TCP)与用户数据 协议(UDP)是该层的重要协议。TCP是一个面向连接的,可靠地协议。它将一台主机发出的字节流无差错地发往互联 上的其他主机。在发送端,它负责把上层传送下来的字节流分成 文段并传递给下层。在接收端,它负责把收到的 文进行重组后递交给上层。TCP还要处理端到端的流量控制(滑动窗口机制)。UDP则是一个不靠谱,无连接的协议,主要适用于不需要对 文进行排序和流量控制的场合。(比如在信息传输中像重要文档与短信等等适用于TCP而视频传输可使用UDP)。
各个层次也对应着不同的协议如图:
(1)源端口 和目的端口字段—–各占16bit。
(2)序 字段—–SEQ序 ,占32bit。TCP连接中传送的的数据流中的每一个字节都编上序 ,序 字段的值则是本 文段所发送的数据的第一个字节的序 。
(3)确认序 —–ACK序 ,32bit,是期望收到对方的写下一个 文段的数据的第一个字节的序 。只有ACK的标志位为1是,确认序 字段才有效,ACK=SEQ+1。
(4)标志位:有6个如下
URG—–紧急信 表明紧急指针(urgent pointer),它能告诉系统此 文段有紧急数据,应尽快传送。
ACK—–确认信 只有当ACK=1时确认 字段才有效。当ACK=0时,确认 无效。
PSH—–推送信 接收TCP推送bit置1的 文段,则尽快交付给接收应用进程,无需缓存。
RST—–复位信 当RST=1时,表明TCP连接中有严重错误,则释放连接,然后再重新建立连接。
SYN—–同步信 SYN表示一个连接请求或连接接收 文。
FIN—–终止信 用来释放一个连接。当FIN=1,表明 文段的发送端的数据已发送完毕,要求释放运输连接。
(5)数据偏移—–占4bit,它自出 文段的数据起始处距离TCP 文段起始处的位置。
(6)窗口字段—–占16bit,用来控制对方发送的数据量,单位为字节。TCP连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方确定对方的发送窗口上限。
(7)检验和—–占16bit,检验 文段的首部和数据,在检验之前要加上12字节的伪首部。
(8)紧急指针字段—–16bit。紧急指针指出在本 文段的紧急数据的最后一个字节的序 。
(9)选项字段—–无固定长度,TCP只规定了一种选项最大 文段长度MSS。
(10)保留字段—–占6位,暂无。
四、TCP的三次握手和四次挥手
TCP的连接和建立都是采用客户端服务器方式。主动发起连接建立的进程叫做客户端(Client)。被动等待连接建立的叫做服务器(Server)。
建立TCP连接需要三次握手如图
第一次挥手:当客户端A要断开TCP连接时,发送一个包,其中标志位FIN=1,ACK=1,发送序 SEQ=X,确认序 ACK=Z,Client进入FIN_WAIT状态。
第二次挥手:客户B知道A要断开后,发送一个确认包,其中标志位ACK=1,发送序 SEQ=Z确认序 ACK=x+1,Server进入CLOSE_WAIT状态。
第三次挥手:客户B也断开TCP连接,此时发送一个包,其中,标志位FIN=1,发送序 SEQ=Z+1
,Server进入LAST_ACK状态。
第四次挥手:客户A收到B的断开请求后,Client进入TIME_WAIT状态,接着发送一个确认包,标志位ACK=1,发送序 SEQ=x+1,确认序 ACK=Z+2,Server进入CLOSE状态。
同样举个栗子,就不拿小红和小明作比较了毕竟刚刚才进入热恋状态,接下来是小涛和小翠。男人有钱就变坏,小涛是个渣男,所以首先签了离婚协议书还有自己的一些证件(要求一个人小翠去办理)(ack),然后附带自己的分手信(seq)寄给小翠。ACK置1,FIN置1。小翠收到信件后,也二话没说,先回了一份信并且说明已经收到小涛的分手信且同意了(seq+1)然后也把证件先递过去(ack)。最后等待离婚证下来(ack+1)然后再把离婚证给小涛寄过去(ACK=1,FIN=1)。最后小涛还可耻的嘲笑了小翠一番(seq+1)ACK=1。
五、TCP/IP协议体系的常见术语
(1)包
包(Packet)是 络上传输的数据片段,也称为分组。包是一种统称,在不同的协议,不同层次,包有不同的名字,如TCP/IP中,数据链路层的包叫做帧(Frame),IP层的包称为IP数据 ,TCP层的包常称为TCP 文等。大多数包都由包头和信息组成:包头常常包括源地址和目的地址、包的长度和类型指示符等。
(2)封装
不同设备的对等层之间依靠封装和解封装来实现相互间的通信。封装就像洗完澡光着身子穿衣服,解封装就像洗澡前脱衣服,脱了一层又一层直到脱光。TCP/IP也是一种计算机数据打包和寻址的标准方法。在数据传送中,可以形象的理解为有两个信封,TCP和IP就像信封,要传递的信息被划分成若干段,每一段塞入一个TCP信封,并在上面记录分段信息,然后再塞入IP大信封里面。同理接收端一步一步拆开来并校验,若发现错误,TCP机制则会要求重发。因此,TCP/IP在互联 中几乎可以无差错地传送数据。
(3)数据段,数据包.数据帧
通信过程中,TCP/IP层与层之间有协议数据单元(Protocol Data Unit)来交换彼此的信息,确保 络设备之间能够通信。传输层在上层数据的基础上加上TCP 头得到的PDU叫做数据段(Segment),依次往下数据段传给 络层,并添加IP 头得到的PDU叫做数据包(Packet),数据包传给数据链路层添加 头得到的PDU称作数据帧(Frame)。最后Frame被转换为bit在物理层通过 络介质传播。
TCP/IP的基本介绍就到这里了,若有想要深入学习的同学,请不惧劳累的坚持学习下去。只有坚持下去了才会有收获。
参考:
https://zhuanlan.zhihu.com/p/29478691
文章知识点与官方知识档案匹配,可进一步学习相关知识 络技能树跨区域 络的通信学习 络层的作用22224 人正在系统学习中 相关资源:翠雨方工作备忘录工具v2.31中文绿色版-其它代码类资源-CSDN文库
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!