IP Header in c

On-campus and online computer science courses to Learn the basic concepts of Computer Science.This tutorial will cover c ,c++, java, data structure and algorithm,computer graphics,microprocessor,analysis of algorithms,Digital Logic Design and Analysis,computer architecture,computer networks,operating system.
code in C:
#include<stdio.h>
int i,j,counter=0,no,x,y,n,flag,bin[200],z,len,start,end,p,decimal;
unsigned int sum,k;
char a[200];
unsigned int dec( int x, int y);
void binary(unsigned int n, int len);
 int bin_dec( int start, int end);
int main()
{
	printf("Enter the TCP header\n");
	scanf("%s",a);
	
	printf("IP Version: %lu\n",dec(0,1));
	printf("Header Length: %lu\n",4*dec(1,2));
	binary(dec(2,4),8);
	printf("Precedence: %lu\n",bin_dec(0,3) );	
		if(bin[3] == 1)
            printf("Minimize Delay Requested\n");
        if(bin[4] == 1)
            printf("Maximize Throughput Requested\n");
        if(bin[5] == 1)
            printf("Maximize Reliability Requested\n");
        if(bin[6] == 1)
            printf("Minimize Cost Requested\n");
	
	printf("Total Length: %lu\n",dec(4,8));
	printf("Identification: %lu\n",dec(8,12));
	binary( dec(12,16) ,16 );	
	
		if(bin[1] == 1)
            printf("Do not Fragment Packet\n");
        else
            printf("Can be Fragmented\n");           
        if(bin[2] == 1)
            printf("More Fragments pending\n");
        else
             printf("No more Fragments pending\n");       
            
	printf("Fragmentation Offset: %lu \n",( 8*bin_dec(3,16)-4*dec(1,2) ) );	
	printf("Time to live: %lu\n",dec(16,18));
	printf("Protocol: ");
	p=dec(18,20);
		if(p == 1)
            printf("ICMP\n");
        if(p == 2)
            printf("IGMP\n");
        if(p == 89)
            printf("OSPF\n");
        if(p == 6)
            printf("TCP\n");
        if(p == 17)
            printf("UDP\n");
	
	printf("Header Checksum: %lu\n",dec(20,24));
		binary( dec(24,32) ,32 );
	printf("Source IP Address: %d.%d.%d.%d\n",bin_dec(0,8),bin_dec(8,16),bin_dec(16,24),bin_dec(24,32));
	
		binary( dec(32,40) ,32 );
	printf("Destination IP Address: %d.%d.%d.%d\n",bin_dec(0,8),bin_dec(8,16),bin_dec(16,24),bin_dec(24,32));
	return 0;
}
unsigned int dec( int x, int y)
{    sum=0;k=1;
   for(i=y-1;i>=x;i--)
    {
       if(a[i]>='0'&&a[i]<='9')
          no=a[i]-'0';     
        if(a[i]>='A'&&a[i]<='F')
          no=a[i]-55;      
		sum=sum+k*no;  
    	k*=16;    
    }
    return sum;
}
void binary(unsigned int n, int len)
{
	for(i=0;i<100;i++)    // initialization
		bin[i]=0; 
	i=len-1;	           
	while(n)
	{
         bin[i--]= n % 2;
         n=n / 2;
    }
}

 int bin_dec( int start, int end)
{    decimal =0;k=1;
   for( i=(end-1);i>=start;i--) 
    {
        decimal=(bin[i]*k)+decimal;
		k*=2;
    }
    return decimal;
}
output:-
Enter the TCP header
4E86512165131219210600001214561981394867
IP Version: 4
Header Length: 56
Precedence: 4
Maximize Reliability Requested
Minimize Cost Requested
Total Length: 20769
Identification: 25875
Can be Fragmented
No more Fragments pending
Fragmentation Offset: 37008
Time to live: 33
Protocol: TCP
Header Checksum: 0
Source IP Address: 18.20.86.25
Destination IP Address: 129.57.72.103
--------------------------------

0 comments: