IP地址&端口号&TCP协议&UDP协议

一、IP地址

1.什么是IP地址?

IP地址是连接在因特网上的主机的标识符

2.IP协议的分类?

IP协议有两个版本,分别是IPV4,IPV6
ps:基本上提到IP地址时,不特指的话,都是指IPV4

3.IP地址的大小、格式、分类?

(1)IP地址的大小:IP地址是一个4字节,32位的整数
(2)IP地址的格式:IP地址是一个32位的整数,但是为了我们便于记忆,通常使用“点分十进制”来表示IP地址,例如:192.168.0.1,用点分割的每一个数字表示一个字节,范围是0到255
(3)IP地址的分类:此处IP地址的分类是指IP地址有源IP地址、目的IP地址

二、端口号

1.端口号是一个2字节16位的整数;
2.端口号用来标识一个进程,告诉操作系统,当前的这个数据要交给哪一个进程来处理;
3.IP地址+端口号可以标识网络上的某一台主机的某一个进程;
4.一个端口号只能被一个进程使用;
5.知名端口:此种端口范围为1-1024,此种端口是预留端口号,是留给操作系统的
6.在进行通信时服务器需要绑定端口号,可随意指定,范围为1025到65535,在指定的时候,指定的端口号不能被其他进程使用,客户端不需要绑定端口号,在运行时操作系统会给客户端自动分配端口号。
7.端口号也分为源端口号和目的端口号。

三、在网络中为什么使用IP地址+端口号来标识一个进程,而不使用IP+PID?PID也可以唯一标识进程,为什么不用?

因为PID虽然可以唯一标识一个进程,但是一个进程的PID会因为进程的重启发生变化,进程重启之前和重启之后的PID会发生变化,例如现在某进程的PID为3345,重启之后此进程的PID就不会是3345了,操作系统会另外分配,分配给进程的PID是唯一的,所以使用PID是不方便的(PID是会发生变化的,虽然一个进程一个唯一的PID,但是一旦进程重启的话,那此进程PID就会改变)
而端口号呢却是唯一固定的,不会随着进程的重启等操作而发生变化,故采用IP地址+端口号来唯一标识一个进程

四、TCP(Transmission Control Protocol 传输控制协议)协议

1.此协议是传输层的协议;
2.此协议是面向连接的,即就是在使用此协议之前,必须先建立连接;
3.此协议是可靠传输的,在传输数据时,此协议可以保证传输的数据不会发生错误;
4.此协议是面向字节流的,即就是在传输数据时可以把一整段数据分开一节一节的传输,例如传输10k大小的文件,此协议在传输时,可一次传输完毕,也可以一次传2k,共分5次传输完成

五、UDP(User Datagram Protocol 用户数据报协议)协议

1.此协议也是传输层的协议;
2.此协议是无连接,即就是在传输数据的时候,不需要建立连接,而是直接传输;
3.此协议不保证可靠传输,即就是在传输数据时,不负责传输的数据的正确性,只是单纯的一个传输而已;
4.此协议是面向数据报的,即就是在传输数据时是一下把整个文件传输的,例如某文件大小为10k,此协议在传输时,是一次传输完毕的。

六、网络字节序

1.大端存储:低地址的数据存储到高字节中,高地址的数据存储到低字节中;
2.小端存储:低地址的数据存储到低地址中,高地址的数据存储到高字节中;
3.数据在网络中传输时采用什么方式呢?
TCP/IP协议规定:网络数据流应采用大端字节序,即低地址高字节。
网络字节序采用大端字节序存储(大端字节存储就是低地址存储高字节,高地址存储低字节),先发出的数据是低地址,后发出的数据是高地址,但是每个主机都有自己的存储方式:大端存储或者小端存储,不管这台主机是大端字节存储还是小端字节存储,都要按照TCP/IP协议规定的网络字节序来发送/接收数据,如果当前发送的主机是小端,就需要先将数据转换成大端,如果当前发送的主机是大端,此时忽略,直接发送,不需要转换,因为网络字节序是大端存储的

4.为使网络程序具有可移植性,使同样的代码在大端和小端计算机上都可以正常编译运行,可以调用以下库函数来转换网络字节序和主机字节序:

这里写图片描述

猜你喜欢

转载自blog.csdn.net/dangzhangjing97/article/details/80280254