CN LAB
CN LAB
Assume you are a network administrator and you have been assigned the task of setting up the IP
network.
You have a single class C IP address 200.55.1.0/24) and have to setup the following networks:
Network B = 40 Hosts
Network C = 20 hosts
Network D= 10 hosts
Network E = 6 Hosts
Network F = 2 Hosts
----------------------------------------------------------------------------------
#include <stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
typedef struct{
int networkSize;
char networkName;
char networkIP[16];
} Network;
int main(){
Network networks[]={
{100,'A',"200.55.1.0"},
{40,'B',""},
{20,'C',""},
{10,'D',""},
{6,'E',""},
{2,'F',""},
};
for(int i=0;i<sizeof(networks)/sizeof(networks[0]);i++){
int subnetmask=32-(int)(log2(networks[i].networkSize));
sprintf(networks[i].networkIP,"%s/%d",networks[i].networkIP,subnetmask);
int hostCounter=1;
for(int i=0;i<sizeof(networks)/sizeof(networks[0]);i++){
printf("Hosts:\n");
for(int j=0;j<networks[i].networkSize;j++){
printf("Hosts %d:200.55.1.%d\n",hostCounter,hostCounter);
hostCounter++;
printf("\n");
return 0;
----------------------------------------------------------------------------------
*GOBACK-N ARQ*
----------------------------------------------------------------------------------
import java.util.Scanner;
int m = scanner.nextInt();
int sf = scanner.nextInt();
int sn = scanner.nextInt();
int e1 = scanner.nextInt();
int e2 = scanner.nextInt();
int e3 = scanner.nextInt();
sf = sn;
-----------------------------------------------------------------------------------
---------------------------------------------------------------------------------
import java.util.Scanner;
public class SelectiveRepeatARQ {
int m = scanner.nextInt();
int Sf = scanner.nextInt();
int Sn = scanner.nextInt();
int E1 = scanner.nextInt();
int E2 = scanner.nextInt();
int E3 = scanner.nextInt();
// Handling events
if (E1 == 1) {
// Timeout event
Sf = Sn;
Sn += E2;
} else if (E3 != 0) {
if (E3 > 0) {
// ACK received
Sf = absE3 + 1;
} else {
// NAK received
Sf = absE3;
}
scanner.close();
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
dns-server-tcp
import socket
HOST='127.0.0.1'
PORT=53
DNS_TABLE={
'google.com':'172.168.11.1',
'wikipedia.com':'192.142.18.1'
def handle_dns_server(data):
domain=data.strip().decode('utf-8')
if domain in DNS_TABLE:
ip_addr=DNS_TABLE[domain]
response=ip_addr.encode('utf-8')
else:
response=b'Not found'
return response
def run_dns_server(data):
sock=socket.socket(socket.AF_INET,sock.SOCK_STREAM)
sock.bind((HOST,PORT))
sock.listen(1)
print(f'Lintening {HOST}:{PORT}')
while True:
connection,client_addr=sock.accept()
try:
data=connection.recv(1024)
if data:
response=handle_dns_server(data)
connection.sendall(response)
finally:
connection.close()
run_dns_server()
--------------------------------------------------------------------------------
Client Code:
dns_client-tcp
import socket
SERVER_HOST='127.0.0.1'
SERVER_PORT=53
def run_dns_client():
sock=socket.socket(socket.AF_INET,sock.SOCK_STREAM)
sock.connect((SERVER_HOST,SERVER_HOST))
while True:
if domain=='q':
break
sock.sendall(domain.encode('utf-8'))
data=sock.recv(1024)
if data:
response=data.decode('utf-8')
print(f'Response:{response}')
sock.close()
run_dns_client()
----------------------------------------------------------------------------
server-crc
--------------------------------------------------------------
#include<iostream>
#include<cstring>
#include<string>
for(size_t i=0;i<size;i++){
crc ^=data[i];
for(int j=0;j<8;j++){
if(crc&1){
crc=(crc>>1)^CRC_POLY;
else{
crc>>=1;
return ~crc;
int main(){
char data[100];
cin.getline(data,strlen(data));
crc=cal_crc(data,strlen(data));
sprintf(data+strlen(data),"%08X",crc);
--------------------------------------------------------------------------------------
client-crc
-----------------------------------------------------------------------------------------
#include<iostream>
#include<cstring>
#include<string>
for(size_t i=0;i<size;i++){
crc ^=data[i];
for(int j=0;j<8;j++){
if(crc&1){
crc=(crc>>1)^CRC_POLY;
else{
crc>>=1;
return ~crc;
int main(){
char data[100];
cin.getline(data,sizeof(data));
sscanf(data+strlen(data)-8,"%X",&ReceivedCRC);
crc=cal_CRC(data,strlen(data)-8);
if(crc=ReceivedCRC){
cout<<"Succesfull"<<endl;
else{
cout<<"Unsuccessful"<<endl;
return 0;
--------------------------------------------------------------------------------
----------------------------------------------------------------------------
#include <stdio.h>
#include <netdb.h>
#include <netinet/in.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <unistd.h>
#define MAX 80
char buff[MAX];
int n;
for (;;) {
bzero(buff, MAX);
bzero(buff, MAX);
n = 0;
if (strncmp("exit", buff, 4) == 0) {
printf("Server Exit...\n");
break;
int main()
if (sockfd == -1) {
exit(0);
else
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(PORT);
exit(0);
else
if ((listen(sockfd, 5)) != 0) {
printf("Listen failed...\n");
exit(0);
else
printf("Server listening..\n");
len = sizeof(cli);
if (connfd < 0) {
exit(0);
else
func(connfd);
close(sockfd);
----------------------------------------------------------------------------------
----------------------------------------------------------------------------------
#include <arpa/inet.h>
#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>
#include <sys/socket.h>
#include <unistd.h>
#define MAX 80
char buff[MAX];
int n;
for (;;) {
bzero(buff, sizeof(buff));
n = 0;
bzero(buff, sizeof(buff));
printf("Client Exit...\n");
break;
int main()
{
if (sockfd == -1) {
exit(0);
else
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");
servaddr.sin_port = htons(PORT);
!= 0) {
exit(0);
else
func(sockfd);
close(sockfd);
}
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
int main(void){
int socket_desc;
// Clean buffers:
return -1;
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(2000);
server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
// Bind to the set port and IP:
return -1;
printf("Couldn't receive\n");
return -1;
inet_ntoa(client_addr.sin_addr), ntohs(client_addr.sin_port));
// Respond to client:
strcpy(server_message, client_message);
printf("Can't send\n");
return -1;
return 0;
--------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
int main(void){
int socket_desc;
// Clean buffers:
// Create socket:
return -1;
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(2000);
server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
gets(client_message);
return -1;
return -1;
close(socket_desc);
return 0;
----------------------------------------------------------------------------------------
dns server udp
----------------------------------------------------------------------------------------
import socket
dns_server_addr='localhost'
dns_server_port=12000
dns_server_socket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
dns_server_socket.bind((dns_server_addr,dns_server_port))
ip_addr_mapping={
'www.google.com':'192.178.11.0',
'www.example.com':'168.111.12.0'
while True:
query_message,client_addr=dns_server_socket.recvfrom(1024)
query_message=query_message.decode()
domain_name=query_message.split()[0]
if domain_name in ip_addr_mapping:
ip_addr=ip_addr_mapping[domain_name]
response_message=f'{ip_addr}:{domain_name}'
else:
response_message=f'Error'
dns_server_socket.sendto(response_message.encode(),client_addr)
-----------------------------------------------------------------------------
----------------------------------------------------------------------------
import socket
dns_server_addr='localhost'
dns_server_port=12000
dns_client_socket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
query_message=f'{domain_name}'
dns_client_socket.sendto(query_message.encode,(dns_server_addr,dns_server_port))
response_message,server_addr=dns_client_socket.recvfrom(1024)
response_message=response_message.decode()
print(response_message)
---------------------------------------------------------------------------