IP地址&端口号

一、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地址

二、MAC地址

现实的情况是,一个局域网往往才能拥有一个独立的 IP;换句话说,IP 地址只能定位到一个局域网,无法定位到具体的一台计算机。这可怎么办呀?这样也没法通信啊。

其实,真正能唯一标识一台计算机的是 MAC 地址,每个网卡的 MAC 地址在全世界都是独一无二的。计算机出厂时,MAC 地址已经被写死到网卡里面了(当然通过某些“奇巧淫技”也是可以修改的)。局域网中的路由器/交换机会记录每台计算机的 MAC 地址。

MAC 地址是 Media Access Control Address 的缩写,直译为“媒体访问控制地址”,也称为局域网地址(LAN Address),以太网地址(Ethernet Address)或物理地址(Physical Address)。

数据包中除了会附带对方的 IP 地址,还会附带对方的 MAC 地址,当数据包达到局域网以后,路由器/交换机会根据数据包中的 MAC 地址找到对应的计算机,然后把数据包转交给它,这样就完成了数据的传递。


三、端口号

有了 IP 地址和 MAC 地址,虽然可以找到目标计算机,但仍然不能进行通信。一台计算机可以同时提供多种网络服务,例如 Web 服务(网站)、FTP 服务(文件传输服务)、SMTP 服务(邮箱服务)等,仅有 IP 地址和 MAC 地址,计算机虽然可以正确接收到数据包,但是却不知道要将数据包交给哪个网络程序来处理,所以通信失败。

为了区分不同的网络程序,计算机会为每个网络程序分配一个独一无二的端口号(Port Number),例如,Web 服务的端口号是 80,FTP 服务的端口号是 21,SMTP 服务的端口号是 25。

端口(Port)是一个虚拟的、逻辑上的概念。可以将端口理解为一道门,数据通过这道门流入流出,每道门有不同的编号,就是端口号。如下图所示:

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

  • 6
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值