Socket编程预习
择日不如撞日,继续写一下Socket
IP地址
源IP和目的IP
IP在网络中是用来标识主机的唯一性; 但是啊这个IP是有分类的,后面会详细说明IP的特点
那么开说之前要明确啊,数据到达另外一个主机不是我们的真正目的,而是把数据传输给远方的一个进程,前面有说过,进程才是计算机执行任务的基本单位,因此我们把想要让计算机完成任务呢,就需要给进程足够的信息(同时也要有相应的进程能够执行我们的信息),这么说来,数据的传输其实是我们实现目的的手段,是为了让进程动起来的手段。
但是啊,在系统中的进程实在是太多了,数据到达指定的主机还不行,还要到达指定的进程。所以在网络的大背景下,系统中呢,需要有东西来标识主机的唯一性。
晓得端口号~
端口号(port)是传输层协议的内容
是由2字节16位的整数,是用来标识一个进程的,这个数据要交给哪个进程处理呢。
所以IP地址+端口号的组合,能够标识网络上的某一台主机的某一个进程; 并且为了保证数据不会满天飞,一个端口号只能被一个进程占用。
端口号的划分
- 0-1023:知名端口号,HTTP,FTP,SSH等这些广为使用的应用层协议,他们的 端口号都是固定的.
- 1024-65535:操作系统动态分配的端口号.客户端程序的端口号,就是由操作 系统从这个范围分配的.
理解端口号和“进程ID”
学了linux大部分知识点的小伙伴应该都知道,pid表示唯一一个进程;此处我们的端口号也 是唯一表示一个进程.那么这两者之间是怎样的关系?
进程ID属于系统概念,技术上也具有唯一性,确实可以用来标识唯一的一个进 程,但是这样做,会让系统进程管理和网络强耦合,实际设计的时候,并没有选择这样做。
理解源端口号和目的端口号
传输层协议(TCP和UDP)的数据段中有两个端口号,分别叫做源端口号和目的端口号. 就是在描述"数据是谁发的,要发给谁";
理解Socket
细说Socket的话,有以下这几点
- IP地址用来标识互联网中唯一的一台主机,port(端口号)用来标识该主机上唯一的 一个网络进程。
- IP+端口号可以就能表示在互联中的唯一一个进程
- 通信的时候,本质是两个互联网进程来进行通信,{srcIp, srcPort,dstIp,dstPort}这样的 4元组就能标识互联网中唯二的两个进程(跟上面的理论不冲突)
- 所以,网络通信的本质,也是进程间通信
- IP+port叫做套接字Socket.
大致就是这样,看了看我学习时候的课件,还简单的说了一下TCP,UPD,我也说一下吧,后面是重点。
TCP UDP
感谢您的赏读
- TCP
传输层协议 有链接(伏笔) 可靠传输(不会轻易丢失数据) 面向字节流 - UDP
传输层协议 无链接 不可靠传输 面向数据报告