Socket TCP和UDP的区别

一、UDP:(用户数据报协议)

1》将数据及源和目的封装在数据包中,不需要建立连接
2》每个数据包得大小限制在64KB之内
3》因为无需连接,因此是不可靠协议
4》不需要建立连接,速度快
5》需要的系统资源较少,结构较简单

二、TCP(传输控制协议)

1》需要建立连接,形成传输数据的通道
2》在连接中进行大数据传输(数据大小不受限制)
3》通过三次握手完成连接,是可靠协议,安全送达,一旦失败,会由发送方重新发送
4》必须建立连接,效率会稍低
5》需要的系统资源较多,结构较为复杂。

三、 TCP 连接时三次握手、断开时四次挥手

**TCP(Transmission Control Protocol,传输控制协议)**是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,只简单的描述下这三次对话的简单过程:主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:“可以,你什么时候发?”,这是第二次对话;主机A再发出一个数据包确认主机B的要求同步:“我现在就发,你接着吧!”,这是第三次对话。三次“对话”的目的是使数据包的发送和接收同步,经过三次“对话”之后,主机A才向主机B正式发送数据。

TCP三次握手过程

  • 主机A通过向主机B 发送一个含有同步序列号的标志位的数据段给主机B ,向主机B 请求建立连接,通过这个数据段,主机A告诉主机B 两件事:我想要和你通信;你可以用哪个序列号作为起始数据段来回应我.
  • 主机B 收到主机A的请求后,用一个带有确认应答(ACK)和同步序列号(SYN)标志位的数据段响应主机A,也告诉主机A两件事:我已经收到你的请求了,你可以传输数据了;你要用哪佧序列号作为起始数据段来回应我。
  • 主机A收到这个数据段后,再发送一个确认应答,确认已收到主机B 的数据段:"我已收到回复,我现在要开始传输实际数据了

这样3次握手就完成了,主机A和主机B 就可以传输数据了.3次握手的特点没有应用层的数据SYN这个标志位只有在TCP建产连接时才会被置1握手完成后SYN标志位被置0

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

  • 当主机A完成数据传输后,将控制位FIN置1,提出停止TCP连接的请求
  • 主机B收到FIN后对其作出响应,确认这一方向上的TCP连接将关闭,将ACK置1
  • 由B 端再提出反方向的关闭请求,将FIN置1
  • 主机A对主机B的请求进行确认,将ACK置1,双方向的关闭结束.

由TCP的三次握手和四次断开可以看出,TCP使用面向连接的通信方式,大大提高了数据通信的可靠性,使发送数据端和接收端在数据正式传输前就有了交互,为数据正式传输打下了可靠的基础

名词解释ACK TCP报头的控制位之一,对数据进行确认.确认由目的端发出,用它来告诉发送端这个序列号之前的数据段都收到了.比如,确认号为X,则表示前X-1个数据段都收到了,只有当ACK=1时,确认号才有效,当ACK=0时,确认号无效,这时会要求重传数据,保证数据的完整性.SYN 同步序列号,TCP建立连接时将这个位置1FIN 发送端完成发送任务位,当TCP完成数据传输需要断开时,提出断开连接的一方将这位置1。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/557234.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql级联查询_mysql 各种级联查询后更新(update select)

mysql 各种级联查询后更新(update select).CREATE TABLE tb1 (id int(11) NOT NULL,A varchar(100) default NULL,B varchar(100) default NULL,C varchar(20) default NULL,PRIMARY KEY (id),KEY id (id)) ENGINEInnoDB DEFAULT CHARSETlatin1;CREATE TABLE tb2 (id int(11)…

mysql锿法_MySQL基本用法

常用sql语句查看数据库: show databases;创建一个HA的数据库: create database HA;查看自己所处的位置: select database();删除数据库: drop database wg;创建表:语法:**create table** 表名 (**字段名** …

Java并发面试宝典,并发相关面试再也难不倒你!

1、在java中守护线程和用户线程的区别? java中的线程分为两种:守护线程(Daemon)和用户线程(User)。 任何线程都可以设置为守护线程和用户线程,通过方法Thread.setDaemon(bool on);…

mysql open table_MySQL open table

背景:MySQL经常会遇到Too many open files,MySQL上的open_files_limit和OS层面上设置的open file limit有什么关系?源码中也会看到不同的数据结构,TABLE, TABLE_SHARE,跟表是什么关系?MySQL flush tables又…

mysql 视图 mybatis_Mybatis调用视图和存储过程的方法

现在的项目是以Mybatis作为O/R映射框架,确实好用,也非常方便项目的开发。MyBatis支持普通sql的查询、视图的查询、存储过程调用,是一种非常优秀的持久层框架。它可利用简单的XML或注解用语配置和原始映射,将接口和java中的POJO映射…

JUC详解

JUC 前言: 在Java中,线程部分是一个重点,本篇文章说的JUC也是关于线程的。JUC就是java.util .concurrent工具包的简称。这是一个处理线程的工具包,JDK 1.5开始出现的。下面一起来看看它怎么使用。 一、volatile关键字与内存可见…

mongodb mysql 写_MySQL和MongoDB语句的写法对照

查询:MySQL:SELECT * FROM userMongo:db.user.find()MySQL:SELECT * FROM user WHERE name ’starlee’Mongo:db.user.find({‘name’ : ’starlee’})插入:MySQL:INSERT INOT user (name, age) values (’starlee’,25)Mongo:db.user.insert({‘name’…

抓包工具,知道手机app上面使用的接口是哪个

fiddler。大家可以百度上面好多选择一个安装。这里随便扔一个 在电脑上安装以后。你再配置手机上的一些设置。 首先保证手机和电脑在同一个局域网上,连得wifi域名前面一样的,在电脑的cmd输入ipconfig 然后打开手机的设置。wifi页面点开查看你连的wifi的…

munin mysql_munin 监控 mysql 2种方法

munin自带的有mysql监控功能,但是没有启用。试了二种方法,都可以监控mysql。一,安装munin mysql的perl扩展# yum install perl-Cache-Cache perl-IPC-ShareLite perl-DBD-MySQL二,为监控创建mysql用户mysql> CREATE USER munin…

使用fiddler实现手机抓包

使用fiddler实现手机抓包 手机上无法直接查看网络请求数据,需要使用抓包工具。Fiddler是一个免费的web调试代理,可以用它实现记录、查看和调试手机终端和远程服务器之间的http/https通信。 一、PC端fiddler配置 1. 安装HTTPS证书 手机上的应用很多涉及…

mysql查询最小的id_Mysql查询表中最小可用id值的方法

今天在看实验室的项目时,碰到了一个让我“棘手”的问题,其实也是自己太笨了。先把 sql 语句扔出来// 这条语句在id没有1时,不能得到正确的查询结果。select min(id1) from oslist c where not exists (select id from oslist where id c.id1…

小米手机上安装https证书(例如pem证书,crt证书)详解

小米手机上安装https证书(例如pem证书,crt证书)关键三步: 1.使用第三方浏览器下载.pem 格式的文件 (我使用的是QQ浏览器) 2.将这个文件放入小米的 DownLoad 文件夹下 (这步也可以不做,只要在4…

php打印mysql sql_php的打印sql语句的方法

echo M()->_sql();这样就可以调试当前生成的sql语句;//获取指定天的开始时间和结束时间$datez"2016-05-12";$t strtotime($datez);$start mktime(0,0,0,date("m",$t),date("d",$t),date("Y",$t));$end mktime(23,59,5…

spring的@ControllerAdvice注解

ControllerAdvice注解是Spring3.2中新增的注解,学名是Controller增强器,作用是给Controller控制器添加统一的操作或处理。 对于ControllerAdvice,我们比较熟知的用法是结合ExceptionHandler用于全局异常的处理,但其作用不止于此。…

mysql游标的用法及作用_Mysql 游标的用法及其作用

mysql 游标的用法和作用,话不多说,这个是网上看到的例子,简答粗暴。例子:当前有三张表a、b、c其中a和b是一对多关系,b和c是一对多关系,现在需要将b中a表的主键存到c中;常规思路就是将b中查询出来…

@ControllerAdvice实现优雅地处理异常

ControllerAdvice,是Spring3.2提供的新注解,它是一个Controller增强器,可对controller中被 RequestMapping注解的方法加一些逻辑处理。最常用的就是异常处理 统一异常处理 需要配合ExceptionHandler使用。 当将异常抛到controller时,可以对异常进行统一处理,规定返…

python django图书管理系统_Python框架:Django写图书管理系统(LMS)

Django模版文件配置文件路径 test_site -- test_site -- settings.pyTEMPLATES [ { BACKEND: django.template.backends.django.DjangoTemplates, DIRS: [os.path.join(BASE_DIR, "template")], # template文件夹位置 APP_DIRS: True, OPTIONS: { context_processor…

springsecurity中session失效后怎样处理_结合Spring Security进行web应用会话安全管理

结合Spring Security进行web应用会话安全管理在本文中,将为大家说明如何结合Spring Security 管理web应用的会话。如果您阅读后觉得本文对您有帮助,期待您能关注、转发!您的支持是我不竭的创作动力!一、Spring Security创建使用se…

如何把数据库从sql变成mysql_如何将数据库从SQL Server迁移到MySQL

一、迁移Database Schema。首先使用Sybase Powerdesigner的逆向工程功能,逆向出SQL Server数据库的物理模型。具体操作是在Powerdesigner中选择“File”,“Reverse Engine”再选择Database,将DBMS选择为SQL Server,如图&#xff1…

mysql查询单词出现的位置_在MySQL中从左侧获取一些单词

为此,请在MySQL中使用LEFT。让我们首先创建一个表-mysql> create table DemoTable-> (-> Title text-> );使用插入命令在表中插入一些记录-mysql> insert into DemoTable values(Java database connectivity to MySQL database);mysql> insert in…