博客
关于我
2-1:套接字(Socket)编程之必备知识
阅读量:615 次
发布时间:2019-03-12

本文共 1251 字,大约阅读时间需要 4 分钟。

文章目录

仔细观察可以发现,主机与主机完成网络通信本质其实进程间通信,例如我们使用QQ相互发送消息以及访问百度服务器查询关键词等等。

对于同一台主机的两个进程,要完成通信,方法有很多种,例如管道,共享内存等。而不同主机的两个继承想要完成通信则必须要通过网络,其中有一个非常关键的问题就是如果把一个主机的数据发送到另一个数据,这就需要IP地址,发送过去之后,一个主机上又有可能运行多个进程,如何准确让QQ这个进程接受呢,这就需要端口号所以说,IP+端口号标识了全网唯一的进程

在这里插入图片描述

(1)IP地址和端口号

A:源IP地址和目的IP地址

前文说过:IP地址用于标识公网中某一个台主机

在这里插入图片描述

所以它能确保数据准确发送给目的主机

B:端口号

在传输层中也有类似于IP地址和MAC地址的概念,它就是端口号,端口号用来确定应该将数据交付给哪一个应用程序

在这里插入图片描述
我们都知道所有进程都需要一个PID来进行表示,但是不是所有的进程都是网络进程,所以不是所有进程都需要端口号。
同时一个进程可以绑定多个端口号(就像学生在学校可以有学号,在健身房可以有会员号),但是一个端口号不能被多个进程绑定

(2)TCP

为了实现数据的可靠传输,需要考虑很多的事情,比如数据是否被破坏,丢包以及分片顺序混乱等问题

所以TCP通过校验和,序列号确认应答,重发控制,连接管理以及窗口控制等机制实现可靠性传输

在这里插入图片描述

(3)UDP

UDP和TCP不一样,它不提供复杂的控制机制,它的主要职责就是发送,数据丢包不丢包,接受没有接受和它没有一点关系

(4)网络字节序

我们知道数据才内存中存放时有大端和小端之分

在这里插入图片描述
而在网络数据流中,也有大小端之分。TCP/IP协议规定,网络数据流应该采用大端字节序,即低地址高字节

无论一台主机是大端还是小端机,都要按照这个规定来发送数据,如果当前主机是小端就要将小端转为大端,然后从内存的低地址到高地址发送数据,接收方也是按照从低到高的顺序接受

在这里插入图片描述

这样做很大的优点就是数据在传输的同时就可以做运算了,如果是小端的话就必须要等待所有数据全部就为了才可以开始操作

所以为了更加方便操作,C中也提供了相应的接口以供主机字节序和网络字节序间的转换

#include 
/* 32位整数从主机字节序转换为网络字节序 */uint32_t htonl(uint32_t hostlong);/* 16位整数从主机字节序转换为网络字节序 */uint16_t htons(uint16_t hostshort);/* 32位整数从网络字节序转换为主机字节序 */uint32_t ntohl(uint32_t netlong);/* 16位整数从网络字节序转换为主机字节序 */uint16_t ntohs(uint16_t netshort);
  • 其中h表示hostn表示networkl表示32位长整数,s表示16位短整数
  • 如果主机是小端字节序,这些函数将参数做相应的大小端转换然后返回;如果是大端字节序则不作修改,直接返回

转载地址:http://uarxz.baihongyu.com/

你可能感兴趣的文章
NIFI大数据进阶_NIFI的模板和组的使用-介绍和实际操作_创建组_嵌套组_模板创建下载_导入---大数据之Nifi工作笔记0022
查看>>
NIFI大数据进阶_NIFI监控功能实际操作_Summary查看系统和处理器运行情况_viewDataProvenance查看_---大数据之Nifi工作笔记0026
查看>>
NIFI大数据进阶_NIFI监控的强大功能介绍_处理器面板_进程组面板_summary监控_data_provenance事件源---大数据之Nifi工作笔记0025
查看>>
NIFI大数据进阶_NIFI集群知识点_认识NIFI集群以及集群的组成部分---大数据之Nifi工作笔记0014
查看>>
NIFI大数据进阶_NIFI集群知识点_集群的断开_重连_退役_卸载_总结---大数据之Nifi工作笔记0018
查看>>
NIFI大数据进阶_使用NIFI表达式语言_来获取自定义属性中的数据_NIFI表达式使用体验---大数据之Nifi工作笔记0024
查看>>
NIFI大数据进阶_内嵌ZK模式集群1_搭建过程说明---大数据之Nifi工作笔记0015
查看>>
NIFI大数据进阶_内嵌ZK模式集群2_实际操作搭建NIFI内嵌模式集群---大数据之Nifi工作笔记0016
查看>>
NIFI大数据进阶_外部ZK模式集群1_实际操作搭建NIFI外部ZK模式集群---大数据之Nifi工作笔记0017
查看>>
NIFI大数据进阶_实时同步MySql的数据到Hive中去_可增量同步_实时监控MySql数据库变化_实际操作_03---大数据之Nifi工作笔记0035
查看>>
NIFI大数据进阶_实时同步MySql的数据到Hive中去_可增量同步_实时监控MySql数据库变化_操作方法说明_01---大数据之Nifi工作笔记0033
查看>>
NIFI大数据进阶_实时同步MySql的数据到Hive中去_可增量同步_实时监控MySql数据库变化_操作方法说明_02---大数据之Nifi工作笔记0034
查看>>
NIFI大数据进阶_离线同步MySql数据到HDFS_01_实际操作---大数据之Nifi工作笔记0029
查看>>