TCP/IP协议

  • TCP/IP协议
  • TCP/IP各层作用与常见协议
  • 各种协议与HTTP协议的关系

TCP/IP协议

本文参考《图解HTTP》——上野宣

TCP/IP是Internet上所有网络和主机之间进行交流时所使用的共同“语言”,是Internet上使用的一组完整的标准网络连接协议。

TCP/IP协议,严格来说是一个协议族,里面包括很多协议(Telnet、HTTP、SMTP、TCP、UDP、IP、ARP等),由于TCP协议和IP是结构中最核心的协议,所以统称为TCP/IP协议。

TCP/IP协议族里重要的一点就是分层,共有4个层次,它们分别是应用层、传输层、网络层、数据链路层。TCP/IP层次结构与OSI层次结构的对照关系如图所示。


利用 TCP/IP协议族进行网络通信时,会通过分层顺序与对方进行通信。发送断从应用层往下走,接收端则从链路层往上走。

TCP/IP各层作用与常见协议

应用层:
应用层决定了向用户提供应用服务的通信活动。
TCP/IP协议族内预存了各类通用的应用服务。比如,FTP(File Transfer Protocol,文件传输协议)和DNS(Domain Name Systrm,域名系统)服务就是其中两类,HTTP(超文本传输协议)也处于该层。

  • DNS(域名系统)

提供域名到IP地址之间的解析服务。
计算机既可以被赋予IP地址,也可以被赋予主机名和域名,比如www.baidu.cn(域名)。用户通常使用主机名或者域名来访问对方的计算机,而不是直接通过IP地址访问。因为与IP地址的一组纯数字相比,用字母配合数字的表示形式来指定计算机名更符合人类的记忆习惯。但要让计算机去理解名称,相对而言就变得困难了。因为计算机更擅长处理一长串数字。
为解决这个问题,DNS服务应运而生,DNS协议提供通过域名查找IP地址,或逆向从IP地址反查域名的服务。

  • HTTP(Hyper-Text Transfer Protocol,超文本传输协议)

HTTP是一种建立在TCP上的无状态连接, 负责 web 服务器与 web 浏览器(客户端)之间的通信。
整个基本的工作流程是客户端发送一个HTTP请求,说明客户端想要访问资源的请求和请求的动作,服务端收到请求后,服务端开始处理请求,并根据请求做出相应的动作访问服务器资源,最后通过发送HTTP响应把结果返回给客户端。Web是建立在HTTP协议上进行通信的。

  • FTP(File Transfer Protocol,文件传输协议)

  • SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)

传输层:
传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。
在传输层有两个性质不同的协议:TCP(Transmission Control Protocol,传输控制协议)和UDP(User Data Protocol,用户数据报协议)

  • TCP(Transmission Control Protocol,传输控制协议)
    TCP是一个面向连接,可靠的数据传输服务。提供可靠的字节流服务。
    字节流服务是指:为了方便传输,将大块数据分割成以报文段(segment)为单位的数据包进行管理。可靠的传输服务是指:能够把数据可靠的传输给对方。
    TCP协议的特性
  1. 面向连接
    为了准确无误的将数据送达目标处,TCP进行数据传输之前必须建立(三次握手)一个TCP连接,而且数据传输完成后要释放连接(四次挥手)。
  2. 双工
    只要建立了TCP连接,就能在发送端和接收端间进行双向的数据传输服务,但这种传输只是端到端的传输。
  3. 可靠
    TCP提供流量控制,解决接收方不能及时处理数据的问题;提供拥塞控制,解决因网络通信拥堵延迟带来的数据丢失问题;提供差错控制,解决数据被破坏、重复、失序和丢失的问题,从而保证数据传输的可靠性。
  4. 基于字节流
    为了方便传输,将大块数据分割成以报文段(segment)为单位的数据包进行管理。发送端以字节流形式发送数据,接收端也把数据作为字节流来接收。

TCP三次握手:
建立一个TCP连接时,需要客户端和客服端总共发送三个包确认连接的建立。
握手过程中使用了TCP的标志———SYN(synchronous,建立联机)和ACK(acknowledgement,确认)

  1. 第一次握手:发送端首先发送一个带SYN(SYN = i)的数据包给接收端,并进入一个SYN_SENT的状态,等待接收端的确认。(发送端:喂,你听的到吗?)
  2. 第二次握手:接收端收到SYN数据包,确认发送端的SYN,知道发送端请求建立连接(ACK = i + 1 ),同时自己也发送一个带SYN +ACK(SYN = k )的数据包回应发送端,并进入SYN_RECV状态。(接收端:我听到到,你听的到吗?)
  3. 第三次握手:发送端收到接收端的SYN+ACK包,向接收端发送一个ACK(ACK = k +1 ),此包发送完毕,发送端和接收端进入Established状态,完成三次握手,发送端和接收端开始传送数据。(发送端:我听的到,我们可以开始聊天了)



TCP四次挥手
FIN(finish结束)

  1. 第一次挥手:客户端主动发送一个FIN(finish结束),用来关闭客户端到服务端的数据传送,客户端进入FIN_WAIT_1的状态。(客户端:我说完了,挂了)
  2. 第二次挥手:服务端收到FIN后,发送一个FIN+ACK(确认)给客户端,服务端进入CLOSE_WAIT的状态。【服务端可能还有一些数据没有传送完,不能立马关闭】(服务端:等等,我还没有说完)
  3. 第三次挥手:服务器发送一个FIN,用来关闭服务端到客户端的数据传送,服务端进入LAST_ACK状态。(服务端:我说完了,挂吧)
  4. 第四次挥手:客户端收到FIN,客户端进入TIME_WAIT状态,接着发送一个ACK给服务端,然后服务端进入CLOSED状态,完成四次挥手。(客户端:好的,再见)


  • UDP(User Data Protocol,用户数据报协议)
    UDP是不可靠的无连接的基于数据报的协议,支持无连接IP数据报的通信方式。
    在UDP下每次的发送和接收,只构成一次通信,数据在传输之前,通信双方不需要建立连接,接收方在收到UDP数据报后,也不需要给出任何应答。UDP是发出去就不管的“不可靠”通信。UDP在数据传输过程中没有流量控制和确认机制,数据报可能会丢失或者延迟、乱序地到达目的地。但是UDP通信效率高,速度快。

网络层:
网络层用来处理在网络上流动的数据包。数据报是网络传输的最小数据单位。该层规定了通过怎样的路径(所谓的传输路线)到达对方计算机,并把数据包传送给对方。与对方计算机之间通过多台计算机或网络设备进行传输时,网络层所起的作用就是在众多的选项内选择一条传输路线。

  • IP协议(互联网协议)
    IP协议(Internet Protocol,互联网协议),是TCP/IP协议栈中最核心的协议之一,通过IP地址,保证了联网设备的唯一性,实现了网络通信的面向无连接和不可靠的传输功能。
    IP协议的作用在于把各种数据包准确无误的传递给接收方,其中两个重要的条件是IP地址,和MAC地址(Media Access Control Address)。由于IP地址是稀有资源,不可能每个人都拥有一个IP地址,所以我们通常的IP地址是路由器给我们生成的IP地址,路由器里面会记录我们的MAC地址。而MAC地址是全球唯一的,除去人为因素外不可能重复。举一个现实生活中的例子,IP地址就如同是我们居住小区的地址,而MAC地址就是小区中某个住户的身份证号,住址可以变化,但身份证号变不了。

IP协议根据数据包的目的IP地址来决定如何将它发送给目标主机。如果数据包不能直接发送给目标主机,那么IP协议会为它寻找一个合适的下一跳路由器,将数据包交给路由器来转发,多次之后,数据包将到达目标主机或者因为发送失败而被丢弃。

**IP地址:**因特网中使用IP地址作为主机的标志。IP地址是IP协议提供的一种统一的地址格式,它是和地域相关的,对于位于同一个子网上的设备,我们分配给他们的IP地址前缀都是一样的。IP地址利用子网掩码将其划分为:网络号和主机号(IP地址就相当于我们的家庭住址,当我们想给小明寄信,就需要准确的知道小明的家庭地址,这样邮递员才能把信送到小明家)
**MAC地址:**又称物理地址,也称为局域网地址。它是网络中每台设备都有的一个唯一的网络标识,用来确认网络设备位置的地址。有了MAC地址以后,以太网采用广播形式,把数据包发给该子网内所有主机,子网内每台主机在接收到这个包以后,都会读取首部里的目标MAC地址,然后和自己的MAC地址进行对比,如果相同就做下一步处理,如果不同,就丢弃这个包。(MAC相当于小明的身份证号,想送信给小明,通过IP地址找到小明的住址,用MAC来确定小明的身份)

IP 间的通信依赖 MAC 地址。在网络上,通信的双方在同一局域网(LAN)内的情况是很少的,通常是经过多台计算机和网络设备中转才能连接到对方。而在进行中转时,会利用下一站中转设备的 MAC 地址来搜索下一个中转目标。这时,会采用 ARP协议(Address Resolution Protocol)。ARP 是一种用以解析地址的协议,根据通信方的 IP 地址就可以反查出对应的 MAC 地址。
在到达通信目标前的中转过程中,那些计算机和路由器等网络设备只能知道很粗略的传输路线,没有人能全面掌握互联网中的传输状况。这种机制称为路由选择,有点像快递公司送货过程。寄件人只要将自己的货物送到集散中心,就可以知道快递公司是否肯收件发货,该快递公司的集散中心检查货物的送达地址,明确下站改送往哪个区域的集散中心,接着,那个区域的集散中心会自己判断是否可以送到收件人手中。

IP协议的特点:

  1. IP协议提供了IP地址,并将源目IP地址夹带在通信数据包里面,为路由器指明通信方向;
  2. IP协议只能指明数据包的源目通信方即"这是谁的送给谁的",但不能保证数据包一定能到达对方,数据是否会被丢弃以及丢弃之后如何处理。所以,IP协议提供面向无连接不可靠传输功能。那么,如果出现丢包且需要重传时,谁来解决呢?这就需要TCP/IP协议栈另外一个"半壁江山"来实现:TCP协议能解决以上这些IP协议不能实现的功能。

数据链路层:
用来处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱动、网络适配器(网卡),以及光纤等物理可见部分(还包括连接器等一切传输媒介)

  • ARP(地址解析协议)
    它实现IP地址----->物理地址(MAC地址)的转换,也就是说根据IP地址获取MAC地址。主机发送信息时将包含目标IP地址的ARP请求广播到局域网上的所有主机,并接收返回消息,以此确定目标的物理地址。
    网络层使用IP地址寻找一台机器,而数据链路层使用物理地址寻找一台机器,因此网络层必须建目标机器的IP地址转化成物理地址,才能使用数据链路层的服务。
  • RARP(逆地址解析协议)
    它与RARP是相反的,实现物理地址到IP地址的转换

各种协议与HTTP协议的关系

【计算机网络】TCP/IP协议(DNS协议、IP协议、TCP协议、UDP协议、三次握手、四次挥手)相关推荐

  1. TCP/IP协议 - 三次握手四次挥手(入门易懂版)

    握手通俗理解为两个人见面Say Hai,客户端和服务端建立连接 挥手就可以理解为两个人结束会面,要Say Goodbai,客户端和服务端断开连接 要了解什么是三握四挥,必须要了解一个重要的知识点:什么 ...

  2. Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手)...

    Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手) 一丶CS/BS 架构 C/S: 客户端/服务器 定义:       这里 ...

  3. python网络通信效率_Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手)...

    Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手) 一丶CS/BS 架构 C/S: 客户端/服务器 定义: 这里的客户端一般 ...

  4. Linux网络编程(网络七层协议,TCP/IP,三次握手四次挥手,TCP/UDP的区别)

    1.OSI 7层网络模型 1.网络七层协议 (1)OSI定义了网络互连的七层框架(物理层.数据链路层.网络层.传输层.会话层.表示层.应用层),即ISO开放互连系统参考模型. (2)各层功能定义 这里 ...

  5. ssh协议是osi_TCP/IP协议和三次握手四次挥手

    计算机网络体系结构 在计算机网络的基本概念中,分层次的体系结构是最基本的.计算机网络体系结构的抽象概念较多,在学习时要多思考.这些概念对后面的学习很有帮助. 网络协议是什么? 在计算机网络要做到有条不 ...

  6. 计算机网络之UDP与TCP协议(三次握手, 四次挥手)

    ⭐️前面的话⭐️ 本文介绍计算机网络中有关传输层协议的知识--UDP与TCP协议,在TCP协议中,为了保证数据的可靠传输,引入了十大保证可靠性的机制,即确认应答,超时重传,连接管理(三次握手,四次挥手 ...

  7. 什么是TCP协议的三次握手四次挥手

    IP协议.HTTP协议.TCP协议.TCP/IP 协议我们经常遇到,而且初学的时候容易弄混.那么他们之间有什么关系呢?重点内容 ####1.什么是TCP/IP 协议 TCP/IP不是一个协议,而是一个 ...

  8. 【网安】初学者,第一天day1 (什么是域名,常见的端口和协议,三次握手四次挥手)

    网安小白第一天 了解什么是域名,常见的端口和协议,三次握手四次挥手 第一次接触网安,从0到1. 一.域名 1.定义 域名是用于在识别和定位Internet上计算机的层次结构式的字符标识,它对应于计算机 ...

  9. 再深谈TCP/IP三步握手四步挥手原理及衍生问题—长文解剖IP

    转载地址: https://www.zhoulujun.cn/html/theory/ComputerScienceTechnology/network/2015_0708_65.html 如果对网络 ...

  10. 在深谈TCP/IP三步握手四步挥手原理及衍生问题—长文解剖IP

    如果对网络工程基础不牢,建议通读<细说OSI七层协议模型及OSI参考模型中的数据封装过程?> 下面就是TCP/IP(Transmission Control Protoco/Interne ...

最新文章

  1. 6位技术大咖11月倾心巨献,大数据+安全主题的技术分享合集【阿里云MVP 干货集锦】...
  2. 线程的同步之Synchronized在单例模式中的应用
  3. 第一讲,我们来谈谈:“什么叫做进制”
  4. Linux下oracle数据库spfile参数配置文件丢失问题解决,“ORA-32001: write to SPFILE requested but no SPFILE is in use“问题处理
  5. ine.strip().split()
  6. 手工将python程序发布为exe执行程序 [转]
  7. 北斗导航 | 微惯导定位系统关键技术与应用
  8. 我关注了389个公众号,这10个牛XXX的推荐给你!
  9. EJB的超时策略:它们如何提供帮助?
  10. 用计算机算小学题目,小学计算机入编考试考试试题.doc
  11. emlog博客主题价值358元lu1.3模板
  12. Eclipse教程(3)--- 修改字符集
  13. 8、二叉树的下一个节点(Python)
  14. 万物并作,吾以观复|OceanBase 政企行业实践
  15. android 定制ROM集成 YouTube API,并实现双屏异显(主屏展示列表,副屛播放视频)
  16. Docker 容器镜像无法正常启动,日志抛出Unable to access jarfile问题的解决方法
  17. c语言主线程退出子线程,简单了解C语言中主线程退出对子线程的影响
  18. 云教室桌面虚拟化环境搭建——flexVDI Dashboard 3.0 云桌面管理系统的使用
  19. 计算机ppt翻页笔,ppt翻页笔没反应?这样做就可以。
  20. 推荐一款latex公式OCR识别软件

热门文章

  1. 高数-(01)函数与极限
  2. 8*8LED点阵图原理(74HC595芯片使用方法)
  3. 【总结】Java 日期时间
  4. 重磅!GitHub突然宣布,对全球人免费开放全部核心功能
  5. 车载监控需求日益上升, 浅析车载远程视频监控解决方案
  6. 使用高通410随身WIFI搭建一个网盘影视网站的详细教程
  7. linux服务器中如何解压分卷文件,Linux解压rar文件(unrar安装和使用,分卷解压)...
  8. 惊闻|万盈:玩一元斗地主 引争执出人命 派出所介入调查
  9. nanotime java_为什么NanoTime不能直接比较大小
  10. linux安装VNC远程桌面环境