TCP/IP与UDP之间的关系

news/2024/5/18 13:38:29 标签: tcp/ip, udp

 

(一)TCP/IP概述

 

 

    1,TCP/IP协议是一个协议簇,是一个多层协议的组合。里面包括很多协议的。。之所以命名为TCP/IP协议,因为TCP,IP协议是两个很重要的协议,就用他两命名了.而UDP只是其中的一个协议.
    主要包括应用层,传输层,网络层,网络接口层,我们常用的http访问就在应用层.

    1.1,应用层:负责具体的应用,比如HTTP访问、FTP文件传输等等

    1.2,传输层:主要为两台主机上的应用程序提供端到端的通信。

    1.3,网络层:IP层有时也称作互连网层,处理分组在网络中的活动,在底层通信网络的基础上,完成路由、寻径功能,提供主机到主机的连接。

    1.4,网络接口层:有时也称作数据链路层或链路层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。

    1.5,UDP (User Datagram Protocol),即用户数据报协议,是一种传输层通信协议。

    1.6,TCP(Transmission Control Protocol),即传输控制协议,是一种传输层通信协议

(二)TCP和UDP比较

        1,TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,在收发数据之前,必须和对方建立可靠的连接.

TCP三次握手过程

         a 主机A通过向主机B 发送一个含有同步序列号的标志位的数据段给主机B ,向主机B 请求建立连接,通过这个数据段,

主机A告诉主机B 两件事:我想要和你通信;你可以用哪个序列号作为起始数据段来回应我.

         b 主机B 收到主机A的请求后,用一个带有确认应答(ACK)和同步序列号(SYN)标志位的数据段响应主机A,也告诉主机A两件事:

我已经收到你的请求了,你可以传输数据了;你要用哪个序列号作为起始数据段来回应我

        c 主机A收到这个数据段后,再发送一个确认应答,确认已收到主机B 的数据段:

"我已收到回复,我现在要开始传输实际数据了

   这样3次握手就完成了,主机A和主机B 就可以传输数据了.

     2,Tcp断开连接要进行4次,4次挥手

    2.1, 当主机A完成数据传输后,将控制位FIN置1,提出停止TCP连接的请求

    2.2, 主机B收到FIN后对其作出响应,确认这一方向上的TCP连接将关闭,将ACK置1

    2.3,由B 端再提出反方向的关闭请求,将FIN置1

    2.4, 主机A对主机B的请求进行确认,将ACK置1,双方向的关闭结束.

   2.5由TCP的三次握手和四次断开可以看出,TCP使用面向连接的通信方式,大大提高了数据通信的可靠性,使发送数据端

   2.6和接收端在数据正式传输前就有了交互,为数据正式传输打下了可靠的基础.

 

 3.,为什么TCP建立连接需要三次握手?

答:防止服务器端,因为接收了早已失效的连接请求报文,导致的一直等待客户端请求,造成的资源浪费

 

4.TCP建立连接要进行3次握手,而断开连接要进行4次?

这是由于TCP的半关闭造成的;TCP连接是全双工的,因此每个方向都必须单独进行关闭。这个单方向的关闭就叫半关闭.

 

5,TCP每次都要经历三次握手、四次挥手会造成性能低下,怎么解决的?

HTTP在1.1的时候出现了一种叫做keepalive connections的机制,它可以在传输数据后仍然保持连接,当客户端需要再次请求数据的时候,直接使用刚刚空闲下来的连接,而无需再次握手。

//为什么TCP连接需要三次握手分开需要四次握手?
http://blog.csdn.net/qq276592716/article/details/19762121

 

 6,小结TCP与UDP的区别:

- TCP面向连接,UDP面向无连接,都具有稳定的双向通信功能

- TCP, 可靠,稳定(为了提供稳定的数据传输,它本身提供了超时重传机制,因此具有很高的稳定性);

   UDP,快,效率高,(缺点是不保证数据一定能够正确传输,尤其是在网络拥堵的情况下)

- 因为TCP有确认机制、三次握手机制,这些也导致TCP容易被人利用,实现DOS、DDOS、CC等攻击。

- 没有TCP的这些机制,UDP较TCP被攻击者利用的漏洞就要少一些,但UDP也是无法避免攻击的,比如:UDP Flood攻击…

a.基于连接与无连接;

b.对系统资源的要求(TCP较多,UDP少);

c.UDP程序结构较简单;

d.流模式与数据报模式 ;

e.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。

 

 7, 什么时候应该使用TCP?

当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用

 8,使用场景:

因为一般QQ聊天是采用UDP来对话,他是面向无连接,当和一个人发完消息后,就释放连接,等待新连接

除了文件传输是才是用TCP

 

 

 

借鉴 :

1,TCP/IP原理浅析--->

https://www.jianshu.com/p/238b3fd525ec

2,TCP和UDP的区别

https://www.jianshu.com/p/eb4750ff7a39

 


http://www.niftyadmin.cn/n/829673.html

相关文章

停车管理程序c语言数据结构,数据结构用c语言实现停车场管理完整.doc

题目:用C语言实现停车场管理程序的设计天津农学院 11计算机系计科小组成员:王亚洲 1108014219王浩轩 1108014208穆建良1108014217陈诚1108014131李伯玉1108014220初始条件:1、栈与队列的建立和操作.2、带TC或VC的计算机系统。主要任务&#x…

python常用快捷键、写代码事半功倍_掌握这些高级Python学习技巧,让你的编程事半功倍...

前言 Python是一种面向对象的语言,它与英语非常相似,因此对于初学者来说是一种非常好的语言。它的高级特性和受支持的库包甚至可以用几行代码来编写复杂的任务。在本文中,我们将介绍python的一些高级特性,掌握这些特性可以让你的编…

linux运行pthread无反应,Linux中对pthread_create的未定义引用

我从https://computing.llnl.gov/tutorials/pthreads/开始从网上拿到以下演示#include #include #define NUM_THREADS 5void *PrintHello(void *threadid){long tid;tid (long)threadid;printf("Hello World! Its me, thread #%ld!", tid);pthread_exit(NULL);}int …

markdown 锚点_如何实现MARKDOWN网页内跳转?

■ 前言在以下几种情况下,需要能够在网页内快速定位跳转:如果网页实在是太长了,后面和前面的叙述需要相互引用,实现网页内跳转可以便于阅读和查看。如果通过链接跳转到另外的长网页,也希望能够快速定位到相关内容&…

linux如何编译php扩展,linux环境下编译php扩展

1、使用ext_skel工具生成扩展框架./ext_skel --extnamemyext2、编辑config.m4文件cd myext/vim config.m4去掉以下内容的注释:PHP_ARG_ENABLE(changchunbo_test, whether to enable changchunbo_test support,[ --enable-changchunbo_test Enable changchunbo_test …

兄弟连沈超linux教程视频,x_04_Linux常用命令-兄弟连-李明-沈超视频教程笔记

新版-兄弟连-李明-沈超老师-linux视频教程笔记clear命令 同 (按键ctrl字母l) 清屏ctrl c 终止当前指令的操作ctrl alt 跳出光标poweroff***********************************************************1.文件处理命令*******************************************************…

docker启动rabbitmq_领导:如何对生产环境的rabbitMQ实时监控并告警?

概述Prometheus 服务本地已经启动了,接下来,需要安装并运行 Exporter,它的主要作用是持续输出监控的组件信息并格式化,同时提供 Http 接口供 Prometheus 服务来抓取。Exporter 也是通过 GO 语言编写的,Prometheus GitH…

c语言黑龙江省二考试题,2012黑龙江省计算机等级考试试题 二级C试题考试题库...

2012黑龙江省计算机等级考试试题 二级C试题考试题库1、下列关于系统软件的4条叙述中,正确的一条是( A )A、系统软件与具体应用领域无关 B、系统软件与具体硬件逻辑功能无关C、系统软件是在应用软件基础上开发的 D、系统软件并不具体提供人机界面2、下面是关于微型计…