标题

  • 网络五元组信息
  • 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特性相关推荐

  1. linux centos 7 系统性能查询、DHCP租期信息查询、网络五元组

    linux centos 7 系统性能查询 top CPU进程情况 killall 最后一列进程名 中止进程信息. killall -9 进程名 强制中断. sar -n DEV 1 每秒显示所有网卡 ...

  2. 21天学会Java之(Java SE第十三篇):网络编程、TCP/UDP通信

    如今,计算机已经成为人们学习.工作.生活必不可少的工具.人们利用计算机可以和亲朋好友在网上聊天,玩网游或发邮件等,这些功能的实现都离不开计算机网络.计算机网络实现了不同计算机之间的通信,而这些必须依靠 ...

  3. Linux服务器上测试TCP/UDP端口的连通性

    目录 说明 测试tcp端口的连通性: 使用nc命令来测试udp端口的连通性: 使用nc命令来测试tcp端口的连通性: 使用案例如下: 说明 翻译自: How to Test Port[TCP/UDP] ...

  4. 【Linux网络编程】TCP带外数据

    [Linux网络编程]TCP带外数据 [1]TCP 包的部首 TCP带外数据相关概念 紧急字段URG     : 当URG=1时,告诉系统此报文段中有紧急数据,应尽快传送. 紧急指针         ...

  5. linux系统怎么测试udp端口通不通,怎么在Linux服务器上测试TCP/UDP端口的连通性?...

    翻译自: How to Test Port[TCP/UDP] Connectivity from a Linux Server (文档 ID 2212626.1) 适用于: Linux OS - Ve ...

  6. Linux网络编程之TCP状态转移

    Linux网络编程之TCP状态转移 一.TCP状态转移时序 二.半关闭及shutdown函数 一.TCP状态转移时序 TCP状态转移图: netstat -apn | grep client 查看客户 ...

  7. 网络原理之TCP/UDP IP

    1 TCP/IP协议五元组:源ip+源端口号+目的ip+目的端口+协议号 windows 查看某个端口: netstat -ano|findstr "想要查看的端口号".会显示某个 ...

  8. 网络原理:TCP/UDP

    目录 一.数据组织格式 1.1 xml 1.2 json 1.3 protobuffer 二.传输层重要协议---UDP协议 2.1 UDP协议端格式 2.2 校验和 三.传输层重要协议---TCP协 ...

  9. 网络原理之TCP/UDP协议

    UDP协议 UDP协议端格式 16位UDP长度, 表示整个数据报(UDP首部+UDP数据)的最大长度; 如果校验和出错, 就会直接丢弃 UDP的特点 UDP传输的过程类似于寄信. 无连接: 知道对端的 ...

最新文章

  1. Solr索引和基本数据操作
  2. mfc窗口添加背景图片
  3. hp服务器330g6怎么安装系统,Hp DL380 g6 安装WIN2003的图文方法
  4. Bzoj4818--Sdoi2017序列计数
  5. java 启动参数 配置,java程序启动参数设置
  6. ETL(数据仓库技术)
  7. Hi3519V101开发环境搭建(二)
  8. 百一测评c语言两个数求和程序,2017计算机二级C语言考前测试题与答案
  9. eclipse中svn检出项目,项目名上带有红色感叹号
  10. mysql8下的密码过期问题以及navicat登录mysql报错的问题
  11. python抓取qq空间相册_用Python爬取QQ空间说说和相册!还不让我访问!
  12. [Android 4.4.3] 泛泰A870 Mokee4.4.3 20140610 RC2.0 通过刷第三版 by syhost
  13. 图画日记怎么画_一年级数学图画日记
  14. 2019信用卡权益总结之十三:延误险
  15. 求html写一个羽毛球拍的代码,一种组合式羽毛球拍的制作方法
  16. #JAVA# JAVA简易版计算器GUI编程练习
  17. 新数仓系列:开源组件运营(3)
  18. 一文搞懂K-means聚类算法
  19. 性能测试中常见的专业术语:QPS、TPS、并发数、响应时间(RT)、吞吐率和吞吐量【杭州多测师】【杭州多测师_王sir】...
  20. 【数据结构 严蔚敏版】 二叉树 基本操作

热门文章

  1. 大数据工程师、BI工程师、数据库工程师什么区别?
  2. BigDecimal四舍五入保留两位小数
  3. 数据库存入图片成功但显示不出来
  4. dva 脚手架目录分析
  5. 营销型网站文案写作的8个技巧
  6. 忆龙2009:印度反倾销棒打中兴华为 商务部紧急应对
  7. MPU9250的详细功能
  8. 软件破解简单示例演示
  9. linux Centos的ftp搭建-配置-上传下载文件--全面版
  10. python中pandas的数据输出显示设置