通信网络基础实验报告_网络通信基础

[toc]

一、ip地址

二、端口

三、socket

四、UDP

五、TCP

一、IP地址

windows下查看ip地址:

ipcofig

04c749ae72e103375b359d39a58b3d03.png

ubutu下查看ip地址:

ifconfig

ubuntu下启动或禁用网卡

sudo ifconfig 网卡网 up/down
IP是Internet Protocol(网际互连协议)的缩写。

一般ip地址都是在说ip v4,192.168.1.104这就是ip。地址长度为32位,采用十进制,一共有

个,但是在2019年11月28日,全球网民总数已突破 40 亿,IP 地址终于不够用了。因此就有了ip v6,fe80::f955:81ec:31da:cc11%7就是这一大长串,ip v6长度为128位,采用十六进制,理论340,282,366,920,938,463,463,374,607,431,768,211,456 个,即 340 万亿兆。所以未来ip v6势必流行起来。

详解ip v4

每一个ip地址都包括两部分:网络地址和主机地址。

c2c644194b5e39750abcf19c036fa1b2.png

A类IP地址有1字节的网络地址和3字节的主机地址组成,网络地址最高位必须是“0”,可用的A类网络一共有126个,每个网络能容纳

个主机。

B类IP地址有2字节的网络地址和2字节的主机地址组成,网络地址最高位必须是“10”,可用的A类网络一共有

个,每个网络能容纳
个主机

C类IP地址有3字节的网络地址和1字节的主机地址组成,网络地址最高位必须是“110”,可用的A类网络一共有2097152个,每个网络能容纳 254个主机,0和255不能用。

D类地址用于多点广播。

E类地址保留,仅用作实验和开发用。

注意:IP地址127.0.0.1,127.255.255.255用于回路测试。如127.0.0.1可以代表本机IP地址,用http://127.0.0.1就可以测试本机中配置的Web服务器。

二、端口

1、什么是端口

如果把IP地址比作一间房子 ,端口就是出入这间房子的门。一个IP地址的端口可以有65536(即:2^16)个!端口是通过端口号来标记的,范围是从0 到65535(2^16-1)。

比如在电脑端使用微信发送一条消息到另一台电脑的微信上,实际上传输的过程中需要目标ip、目标端口号、本机ip、本机端口号、内容。

2、端口是如何分配的?

  • 周知端口(well known port)

周知端口是众所周知的端口号,范围从0到1023,其中80端口分配给WWW服务,21端口分配给FTP服务等。我们在IE的地址栏里输入一个网址的时候是不必指定端口号的,因为在默认情况下WWW服务的端口是“80”。比如139 端口专门用于NetBIOS与TCP/IP之间的通信,不能手动改变。

  • 注册端口

端口1024到49151,分配给用户进程或应用程序。这些进程主要是用户选择安装的一些应用程序,而不是已经分配好了公认端口的常用程序。这些端口在没有被服务器资源占用的时候,可以用用户端动态选用为源端口。

  • 动态端口

动态端口的范围是从49152到65535。之所以称为动态端口,是因为它 一般不固定分配某种服务,而是动态分配。

1024-65535这些端口一旦程序关闭,同时也就释放了所占用的端口号。

三、socket简介(套接字)

1、什么是套接字

套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。总之,套接字Socket=(IP地址:端口号),例如,如果IP地址是210.37.145.1,而端口号是23,那么得到套接字就是(210.37.145.1:23)。

主要用来解决网络中进程之间的通讯:

  • 本地进程间通讯

a、消息传递(管道、消息队列、FIFO);

b、同步(互斥量、条件变量、读写锁、文件和写记录锁、信号量);

c、内存共享;

d、远程过程调用;

  • 网络中进程如何通讯?

首先要解决两个问题:

a、如何标识一台主机?

b、如何标识唯一进程,本地通过pid标识,网络中应该怎样标识?

解决办法:

a、TCP/IP网络层中ip地址可以唯一标识网络中的主机;

b、传输层的“协议+端口”可以唯一标识主机中应用程序(进程);

因此,利用三元组(ip地址、协议、端口)就可以标识网络进程了。

2、创建socket

在python中使用socket模块的函数socket就可以完成:

import 

说明:

  • AddressFamily:可以选择AF_INET(用于Internet进程间通信)或者AF_UNIX(用于同一台机器进程间通信),实际工作中常用AF_INET
  • Type:套接字类型,可以是SOCKET_STREAM(流式套接字,主要用于TCP协议)或者SOCKET_DGRAM(数据报套接字,主要用于UDP协议)

3、创建一个TCP socket

import 

4、创建一个UDP socket

import 

四、UDP

1、什么是UDP?

用户数据报协议(UDP,User Datagram Protocol)。UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据报的方法。

UDP通信方式类似于写信模式,每次发送数据都要写上对方ip,端口,自己ip、端口。这样的通讯方式的缺点就是不安全。可能出现丢失。

0a0a6af1ade7a91c332db3b494efca15.png

2、使用udp发送接收数据

import 

814d51de28586c370ae9e29a6545dbc2.png

3、使用UDP接收数据

import 

4、UDP聊天器

import 

五、TCP

1、什么是TCP?

传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。

TCP通信需要经过创建连接、数据传送、终止连接三个步骤。

TCP通信方式类似于打电话,它的优点在于稳定,如果数据发送失败,就会再发一遍。保证数据一定能够被传递,同时接受方会对发送的数据进行检查,如果检测到有错误他会要求重发一次,保证了数据不能丢失。这就是所谓的TCP采用了发送问答机制、超时重传、错误校验、流量控制和阻塞管理。从而保证了数据的可靠传输。

2e42aa1e0a5bb0b39bed6e714a2abc53.png

2、TCP客户端

import 

3、TCP服务器

import 

4、文件下载器

# 客户端
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值