编程语言原本是被设计成专门使用在计算机上的,但它们也可以用来定义算法或者数据结构。正是因为如此,程序员才会试图使程序代码更容易阅读.
TCP协议目前是事实上的网络基础。许多更高层的应用协议HTTP,FTP都基于TCP。
TCP协议的学习可以说枯燥无比,尤其是学生阶段,根本不知道用在什么地方,根本不知道重要性是什么。事实上是,基于目前的网络发展和分布式发展,TCP简直就是基础中的基础。许多网络的问题,配置,入侵,防御乃至架构,都涉及到TCP的具体应用及机制。
以下是我总结的TCP学习过程
1. 了解学习TCP协议的重要性和必要性,了解TCP协议为什么被发展出来
推荐这个问题下的各个回答:TCP/IP 协议到底在讲什么?
2. 学习TCP协议的三次握手以及四次挥手,重点了解为什么要三次握手,为什么要四次挥手,在整个过程中状态是如何变迁的。(经典的状态图以及握手挥手图)
a.为什么要三次握手?不是一次,两次或者四次。我们来论证一下,如果只有一次会发生什么情况,a向b发起连接请求,假设b没收到,则b其实完全不知道a发起了请求,而a也完全不知道b收没收到,所以一次握手是不可靠的如果两次握手呢,a向b发起连接请求,b收到a的请求给a回复一个请求,假设此时a收到了b的回复,a知道了b已经ready了,可b完全不知道a是否ready,有可能a并没有收到b的请求,也有可能收到了,但这些b都完全不知道,所以只是单向的建立了连接如果是四次握手呢,其实第2次让a知道b ready了,第三次让b知道a也ready了,第四次完全就是多余了,会浪费网络资源。
b.为什么要四次挥手?不是3次?实际上两边连接完全可以分开看,用2次挥手断开其中一边连接,用另外2次挥手断开另一边的连接,最终完成整个连接关闭。之所以这样设计,是因为有可能某一边数据还未传输完,连接还未关闭。因为TCP被设计为全双工协议,可以任何一边单向发送数据。
1. 握手及挥手过程
2. TCP的状态转换图
3. 学习TCP协议是如何保持可靠性设计的。
主要目的是用来参考,以便在其他通信场合时用作架构和设计的参考
1).包应答序列号及包重组。
面临的问题:网络传输中,会出现数据的破坏,丢包,重复,分片混乱等问题。
本质上,要想保证传输的可靠性,则需要对传输的内容进行验证。
a. 对于网络数据的破坏(比如宇宙射线影响偷笑导致发射火箭的数据中某一位从0变为1),采取的策略是丢弃重新发送,以确保不会出现致命的错误。TCP在自身协议中单独划了一块checksum用于这种校验,校验算法本质上是将整块数据通过某个函数映射到16位的校验位上(比如用字符相加的和来校验)
b. 对于数据传输正确,但是分片乱序,重复等问题,或是丢包,采取的策略并非丢弃而是自行进行包重组。
考虑两种情况:第一种情况是某个包缺少了,导致整个数据中间缺了一段1000字节,那么如何通知到对方自己少了哪一段数据另一种情况是由于网络或者重发机制的原因导致某一个包收到多次,如何把多余的包都排除掉,仅保留已有数据。
TCP在设计时候充分考虑这点,其中SYN和ACK就是用来确保这个过程的,SYN发送的是字节顺序,ACK则应答收到的字节序加1。这样,无论是发送方还是接收方,都可以准确的维护一张发送接收字节的列表。从而可以知道对方还需要哪些字节,或自己已经接收了哪些字节。
TCP/IP由四个层次组成:数据链路层、网络层、传输层、应用层.------------------------------------------------------------
一数据链路层
这是TCP/IP软件的最低层,负责接收IP数据报并通过网络发送之,或者从网络上接收物理帧,抽出IP数据报,交给IP层。
二网络层
负责相邻计算机之间的通信。其功能包括三方面:
1、处理来自传输层的分组发送请求,收到请求后,将分组装入IP数据报,填充报头,选择去往信宿机的路径,然后将数据报发往适当的网络接口。
2、处理输入数据报:首先检查其合法性,然后进行寻径--假如该数据报已到达信宿机,则去掉报头,将剩下部分交给适当的传输协议;假如该数据报尚未到达信宿,则转发该数据报。
3、处理路径、流控、拥塞等问题。
三传输层
提供应用程序间的通信。其功能包括:
1、格式化信息流;
2、提供可靠传输。为实现后者,传输层协议规定接收端必须发回确认,并且假如分组丢失,必须重新发送。
四应用层
向用户提供一组常用的应用程序,比如电子邮件、文件传输访问、远程登录等。远程登录TELNET使用TELNET协议提供在网络其它主机上注册的接口。TELNET会话提供了基于字符的虚拟终端。文件传输访问FTP使用FTP协议来提供网络内机器间的文件拷贝功能。
===============================================================
简单的说
TCP/IP通过使用协议栈工作。这个栈是所有用来在两台机器间完成一个传输的所有协议的几个集合,栈分成5层,栈的每一层都能从相邻的层中接收或发送数据。每一层都与许多协议相联系。在栈的每一层,这些协议都在起作用。本章的下一部分将分析这些服务,以及它们在栈中是如何联系的。同时也分析一下它们的功能,它们提供的服务和与安全性的关系。
TCP/IP参考模型是ARPANET及其后继的因特网使用的参考模型。其将协议分为:网络接入层、网际互连层、传输层以及应用层。
1.应用层:对应OSI参考模型的上层,为用户提供所需的各种服务,如FTP,Telnet,DNS,SMTP等。
2.传输层:传输层对应于OSI参考模型的传输层,为应用层实体提供端到端通信功能,确保数据包的顺序传输和数据的完整性。该层定义了两个主要协议:传输控制协议(TCP)和用户数据报协议(UDP)。
TCP协议提供可靠的,面向连接的数据传输服务而UDP协议提供不可靠的无连接数据传输服务。
3.互联网互联层:互联网互联层对应OSI参考模型的网络层,主要解决从主机到主机的通信问题。它包含通过网络逻辑传输的协议设计数据包。重点是重新给主机一个IP地址来完成主机的寻址,它还负责在各种网络中路由数据包。
该层有三个主要协议:Internet协议(IP),Internet组管理协议(IGMP)和Internet控制消息协议(ICMP)。 IP协议是Internetworking层中最重要的协议。它提供可靠的无连接数据报传送服务。
4.网络接入层:网络接入层(即主机 - 网络层)对应于OSI参考模型中的物理层和数据链路层。它负责监视主机和网络之间的数据交换。
实际上,TCP / IP本身并没有定义该层的协议,但参与互连的每个网络都使用自己的物理层和数据链路层协议,然后与TCP / IP的网络接入层连接。地址解析协议(ARP)在此层(OSI参考模型的数据链路层)上工作。
扩展资料:
OSI参考模型与TCP/IP参考模型的异同点:
1. OSI参考模型和TCP / IP参考模型都使用分层结构,但OSI使用的七层模型和TCP / IP是四层结构。
2. TCP / IP参考模型的网络接口层实际上没有真正的定义,但是是概念性描述。 OSI参考模型不仅分为两层,而且每层的功能都非常详细。即使在数据链路层,也分离媒体访问子层以解决局域网中共享媒体的问题。
3. TCP / IP的网络互连层等同于OSI参考模型的网络层中的无连接网络服务。
4. OSI参考模型基本上类似于TCP / IP参考模型的传输层功能。它负责为用户提供真正的端到端通信服务,并且还从高层屏蔽底层网络的实现细节。
不同之处在于TCP / IP参考模型的传输层基于网络互连层,网络互连层仅提供无连接网络服务,因此面向连接的功能完全在TCP协议中实现,当然, TCP / IP的传输层还提供UDP等无连接服务
相反,OSI参考模型的传输层基于网络层,它提供面向连接和无连接的服务,但传输层仅提供面向连接的服务。
5.在TCP / IP参考模型中,没有会话层和表示层。事实证明,这两层的功能可以完全包含在应用层中。
6. OSI参考模型具有高抽象能力,适用于描述各种网络。 TCP / IP是首先开发TCP / IP模型的协议。
7. OSI参考模型的概念明显不同,但它过于复杂虽然TCP / IP参考模型在服务,接口和协议之间的区别中不清楚,但功能描述和实现细节是混合的。
8. TCP / IP参考模型的网络接口层不是真实层OSI参考模型的缺点是层数太多,划分意义不大但增加了复杂性。
9.尽管OSI参考模型是乐观的,但由于缺乏时间安排,该技术尚不成熟且难以实施相反,虽然TCP / IP参考模型有许多令人不满意的地方,但它非常成功。
参考资料:百度百科-TCP/IP参考模型
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)