Linux:网络五元组tcp、udp特性
标题
- 网络五元组信息
- UDP简单的特性
- TCP简单特性
- 网络字节序
IP地址+端口号就叫套接字,用于定位主机中的一个进程
- 我们在系统编程部分学过管道,管道是用于同一主机下不同进程间的通信
- 套接字则用于不同主机之间的通信,由套接字定位需要通信的进程
网络五元组信息
一条网络数据一定包含5部分信息
|源IP地址|表示该条消息来自哪个机器|
|–|–|–|
| 源端口|表示该条消息来自于哪个端口|
| 目的IP地址|表示该条消息去哪个机器|
| 目的端口|表示该条消息去哪个进程|
| 协议|双方网络数据采用的具体网络协议|
源IP+源端口:表示数据从哪台主机的哪个进程上产生
目的IP+目的端口:表示数据去往哪台主机的哪个进程
UDP简单的特性
1.无连接:
- UDP客户端给服务端发送消息时,不需要和服务端先建立连接,直接发送
- 也就是说客户端不知道服务端是否在线,是否在工作,只进行发送,不关心是否能到服务端
2.不可靠
- UDP并不会保证数据是可靠有序到达对端
- 也就是说多次发送的信息可能是无序的
3.面向数据报
- UDP不管是和应用层还是网络层进行数据传递的时候都是整条数据传输,也就是说收到多少,就传输多少,数据不能被分隔发送或接收
- 也就是说,UDP是传输层协议,上面是应用层下面是网络层,要想使用UDP发送数据,我们在应用层调用UDP发送接口;
- 把数据给传输层的UDP协议后,该协议会在传输层打上UDP数据包头,即刻将数据给网络层,不会等待下一条数据和上一条数据一起处理
TCP简单特性
1.面向连接
- 通信双方在发送数据之前,必须先建立连接,再进行发送
2.可靠传输
- 保证数据是可靠并且有序的到达对端,意思是数据到达对端应用层是有序的;
- 当后边数据先到达,应用层调用TCP的接收接口,并不会将数据输出,它需等待前边的数据到达后再次调用TCP接口,才能拿到所有数据;
- 调用接收接口接收多少个字节是由接口函数的参数决定
3.面向字节流
- 将多次发送的数据整合在一起,或者将一次的数据分隔多次发送,数据在网络传输过程当中没有明显的数据边界;
- 例如先发送123,再发送456,123和456中间是没有间隔的;
- 如果该数据之间传输到对端,接收端拿到123456时,它是无法通过原生数据区分是先发12还是再发3456的;
- 将这种没有明显间隔的数据称为TCP粘包问题(后续讲解)
网络字节序
网络字节序:
- 本质上是约定在网络传输数据上时采用哪种字节序(采用大端字节序);
主机字节序:
- 指当前机器的字节序
小端机器产生的数据在网络上传输,必须要转换为网络字节序(通过函数转换);
大端机器产生的数据在网络上传输,也需要调用转换函数,但是函数什么都不会做
深入理解:
- 在网络链路中,网络路由设备一定会解析数据,所以需要在网络链路中规定一种字节序,以保证数据不管到哪一个转发设备都能转发
- 规定在网络层以大端字节序解析,对于机器使用大小端字节序解析均可;
- 如果是小端字节序的机器不经过转换,传输到网络后到达对端,因为解析的不同会导致数据错误;
- 网络中规定了字节序后,网络设备就能依据网络传输数据中的IP和端口进行传输;
交换机,路由器之所以能转发数据,需要知道该数据到哪一台机器中去,就需要解析该数据
这两种字节序就一定牵涉到网络当中,IP和端口的主机字节序与网络字节序的相互转换
注意:
- 这里IP的转换是用点分十进制转换的,不是用的32位无符号整数
- 如果是转换无符号32位的整数,IP的转换函数和上述不同
Linux:网络五元组tcp、udp特性相关推荐
- linux centos 7 系统性能查询、DHCP租期信息查询、网络五元组
linux centos 7 系统性能查询 top CPU进程情况 killall 最后一列进程名 中止进程信息. killall -9 进程名 强制中断. sar -n DEV 1 每秒显示所有网卡 ...
- 21天学会Java之(Java SE第十三篇):网络编程、TCP/UDP通信
如今,计算机已经成为人们学习.工作.生活必不可少的工具.人们利用计算机可以和亲朋好友在网上聊天,玩网游或发邮件等,这些功能的实现都离不开计算机网络.计算机网络实现了不同计算机之间的通信,而这些必须依靠 ...
- Linux服务器上测试TCP/UDP端口的连通性
目录 说明 测试tcp端口的连通性: 使用nc命令来测试udp端口的连通性: 使用nc命令来测试tcp端口的连通性: 使用案例如下: 说明 翻译自: How to Test Port[TCP/UDP] ...
- 【Linux网络编程】TCP带外数据
[Linux网络编程]TCP带外数据 [1]TCP 包的部首 TCP带外数据相关概念 紧急字段URG : 当URG=1时,告诉系统此报文段中有紧急数据,应尽快传送. 紧急指针 ...
- linux系统怎么测试udp端口通不通,怎么在Linux服务器上测试TCP/UDP端口的连通性?...
翻译自: How to Test Port[TCP/UDP] Connectivity from a Linux Server (文档 ID 2212626.1) 适用于: Linux OS - Ve ...
- Linux网络编程之TCP状态转移
Linux网络编程之TCP状态转移 一.TCP状态转移时序 二.半关闭及shutdown函数 一.TCP状态转移时序 TCP状态转移图: netstat -apn | grep client 查看客户 ...
- 网络原理之TCP/UDP IP
1 TCP/IP协议五元组:源ip+源端口号+目的ip+目的端口+协议号 windows 查看某个端口: netstat -ano|findstr "想要查看的端口号".会显示某个 ...
- 网络原理:TCP/UDP
目录 一.数据组织格式 1.1 xml 1.2 json 1.3 protobuffer 二.传输层重要协议---UDP协议 2.1 UDP协议端格式 2.2 校验和 三.传输层重要协议---TCP协 ...
- 网络原理之TCP/UDP协议
UDP协议 UDP协议端格式 16位UDP长度, 表示整个数据报(UDP首部+UDP数据)的最大长度; 如果校验和出错, 就会直接丢弃 UDP的特点 UDP传输的过程类似于寄信. 无连接: 知道对端的 ...
最新文章
- Solr索引和基本数据操作
- mfc窗口添加背景图片
- hp服务器330g6怎么安装系统,Hp DL380 g6 安装WIN2003的图文方法
- Bzoj4818--Sdoi2017序列计数
- java 启动参数 配置,java程序启动参数设置
- ETL(数据仓库技术)
- Hi3519V101开发环境搭建(二)
- 百一测评c语言两个数求和程序,2017计算机二级C语言考前测试题与答案
- eclipse中svn检出项目,项目名上带有红色感叹号
- mysql8下的密码过期问题以及navicat登录mysql报错的问题
- python抓取qq空间相册_用Python爬取QQ空间说说和相册!还不让我访问!
- [Android 4.4.3] 泛泰A870 Mokee4.4.3 20140610 RC2.0 通过刷第三版 by syhost
- 图画日记怎么画_一年级数学图画日记
- 2019信用卡权益总结之十三:延误险
- 求html写一个羽毛球拍的代码,一种组合式羽毛球拍的制作方法
- #JAVA# JAVA简易版计算器GUI编程练习
- 新数仓系列:开源组件运营(3)
- 一文搞懂K-means聚类算法
- 性能测试中常见的专业术语:QPS、TPS、并发数、响应时间(RT)、吞吐率和吞吐量【杭州多测师】【杭州多测师_王sir】...
- 【数据结构 严蔚敏版】 二叉树 基本操作