What is IPv4 and IPv6

The internet is a gigantic network of computers across the globe. Billions of devices communicate with each other on daily basis to send and receive data. For instance, when you access a website, you’re communicating with the server computer hosting the website. You send a request for the website and the server sends the relevant data to you.

You just don’t bump into a random server and start requesting for website data. You type the website’s name in your web browser, which, then asks the DNS server to resolve the IP address of the server where the website is hosted. Then a connection is established with the server and a request for website data is made. The website then gets loaded on your web browser.

Where does the IP addresses come from?

These addresses, which look like, are the internet protocol addresses assigned to every device which connects to the internet. An IP address is the identity of a device on the internet. It is also useful in routing the internet traffic to and from that device. The data travels in the form of packets having the source and destination IP address in their header which enables them to reach the correct device.

The IP addresses are defined according to the Internet Protocol, included in the Internet Protocol Suite, which is a set of rules to manage how the data packets travel across the internet and reach their destination. Now, for instance, you send 10 packets to a destination. Each packet will know the destination IP address but it’s possible that the packets may take different paths to reach the destination, may not reach in the correct order, or may not reach at all. This is because IP is a connectionless protocol. It doesn’t care about the integrity of the data sent over the network.

An IP address is the identity of a device on the internet.

The connection-oriented Transmission Control Protocol, also a part of the Internet Protocol Suite, comes in for the rescue operation. TCP ensures that your packets end up safely on the destination computer. It establishes a connection between two communicating devices on the internet and keeps an eye on the order and reliability of the data packets reaching the end device. That’s why the IP is referred as the TCP/IP.


The IPv4 or the Internet Protocol version 4 (RFC 791) was originally used in the ARPANET. Although, it’s the fourth generation of the Internet Protocol but it is the first major version of the Internet Protocol that finds its application for most of the internet. There is newer IPv6 which is in the process of being deployed.

According to IPv4, the IP addresses are actually in binary numbers in the form of 0s and 1s. But they can also be written as decimal numbers separated by a dot. This is done to ensure that they don’t bounce over our heads.

The IPv4 uses a 32-bit address space which is equivalent to 4 bytes. It means that the total number of IP addresses on the internet can go all the way to 2^32. That’s roughly 4.3 billion addresses.


2^32 is a big number but it isn’t enough to accommodate the rising population of internet connected devices like laptops, tablets, smartphones, etc. Hence, the IPv6 protocol has been brought into existence. It has a big address space of 128-bits. And the total number of unique addresses are 2^128. So, the limit of IP addresses goes beyond the reach for many decades or maybe centuries.

The 128-bit IPv6 address looks a bit different than the IPv4 address. Each group separated by a colon (instead of a dot) represents 16-bits in the form of four hexadecimal digits . The 64 bits of the IPv6 address represent the network address which is used for routing and the rest 64 bits give details about the host’s network interface.

What’s the difference: IPv4 vs IPv6

The main difference between the IPv4 and IPv6 is their address space which takes IPv6 ages ahead of the IPv4 protocol. But it isn’t the only difference between the two. There are other things that make IPv6 a better option for the internet.



IPv4 is old and it wasn’t created with much security aspects in mind. It presumes that the endpoint applications have security measures of their own. Still, it has managed to come this far. But the IPv6 is designed to make the journey of the packets more secure. Things, like checking for packet integrity and encrypting the data, have been soldered to the IPv6 which was an attachment in the case of its predecessor.

The IPv6 protocol is designed to ensure end-to-end security over a connection. A major addition IPSec includes cryptographic protocols to enable secure data communication. Authentication Header (AH) and Encapsulating Security Payload (ESP) protocols are part of IPSec which enable authentication and data integrity. ESP also ensures the data privacy. Another main protocol is the Internet Key Exchange (IKE) protocol which is used to set up and establish shared security attributes between two endpoint devices.

IPSec is a major requirement for IPv6. But in the case of IPv4, the IPSec protocol has been implemented as an optional addition.

Fewer things in the head

In the case of IPv6, the packet header doesn’t have unimportant fields. It has only 8 fields in comparison to 13 in the case of IPv4. The extra fields are now optional header extensions. Also, the size of the header (40 bytes) is almost double of IPv4 (20 bytes). The less clutter in the header contributes to simplified packet processing in the router. Thus, making the processing more efficient and less time consuming.

Reduces the need of NAT

The IPv4 addresses are limited and have to be used for billions of devices on the internet. Hence, the concept of Network Address Translation came into existence. It allows a number of devices to use the same IP address. But wait, IP addresses are unique.

A pool of IP addresses starting from till can be used for private networks such as the ones in organizations or the one we have in our house. The public IP address is assigned to the router and the connected device are allotted to one of the private IPs.

When a packet originates from a device, it goes to the router which changes the source private address in the header with the public address and sends it towards the destination. Similarly, at the time of arrival, it removes the public address from the packet header and puts the private address of the recipient device on the network.

The IPv6 has plenty of addresses at its disposal, so, each device could have its own public address giving it a unique identity on the internet and say goodbye to NAT. This can be helpful in the case of applications like P2P file sharing, multiplayer games, VoIP, streaming, etc.

NAT brings along some benefits for the device by adding an extra layer of security. The devices are not directly visible on the network. IPv6 also has an equivalent of the IPv4 private address in the form of unique local address which is not routable on a global scale.

No Geographical Limitations

Since the US created the internet and internet protocol, the distribution of the IP address pool is also favored for the country. Almost 50 percent of all the IP addresses are reserved for the United States. But in the case of IPv6, there is no preference given to any particular region in the world.


Better Quality of Service (QoS) in IPv6

The concept of QoS is very much similar for the IPv4 and IPv6. The contrast lies in the header fields which differentiate the packet processing during the transmission. In the IPv4 header, the 8-bit DS (Differentiated Services) field is used to classify the packet and what kind of service it is associated with. This check is done at almost every intermediate router present in the packet’s path.

The IPv6 header makes the process easier. Its header includes a 20-bit Flow Label field which enables quick processing of the packets. It allows routers to identify and handle packets belonging to the same flow i.e. the packets originating from a particular source and terminating to a particular destination. The flow is recognized by the combination of packet source and the value of Flow Label. The delivery of the packets becomes more efficient and thus, the improves the QoS.

IPv6 Stateless Auto-Configuration

The IPv6 protocol incorporates a feature known as neighbor discovery. This enables machines and routers on a network to find and talk to each other. A device can autoconfigure its IPv6 address and inform other devices. This eliminates the requirement of a DHCP server to auto-configure IP address for the device, as in the case of IPv4. This process is known as stateless auto-configuration

But we can’t kick out DHCP altogether. The stateless auto-configuration is not applicable in practical network scenarios. Thus, IPv6 also supports DHCPv6 which enables stateful auto-configuration through a DHCPv6 protocol.

No backward compatibility

The people at the Internet Engineering Task Force, who designed the IPv6 standard, have expressed their regret on the fact that they didn’t make it compatible with the older IPv4. Actually, they visualized a situation wherein the devices would be running the IPv4 and IPv6 protocols simultaneously in dual-stack mode.

An alternative is to fake it till you make it. This can be achieved by tunneling i.e. putting IPv6 packets inside the IPv4 packets. Also, the network address and protocol translator (translate IPv6 packets into Iv4 packets) can be used to overcome this problem.

Winding Up

Other than the above-stated differences, the IPv6 also supports better multicasting features but doesn’t support broadcasting, unlike IPv4. The IPv6 is built upon the roots of IPv4 following many of its design concepts. This would enable a smooth shift from IPv4 to IPv6 over a period of time. Also, the two protocols are not compatible with each other. So, the devices will have to support both IPv4 and IPv6 protocols until the time IPv6 is omnipresent on the internet.

It’s no denying the fact that IPv6 is better than IPv4 in many aspects. It has been in existence for more than a decade. Yet, its deployment hasn’t been on the butter track despite the fact that the IPv4 address space is burning out. It might be due to constant improvement in the IPv4, like NAT and CIDR which enable efficient use of the limited IP address pool. Still, the IPv6 adoption has been on a slow rise.

Many leading domain name systems now support IPv6 addresses. For example, the Google public DNS. As per Akamai’s IPv6 adoption visualization, Belgium has the highest adoption rate of 41.3% followed by Greece at 24.9% and Germany at 23.3%. These number would rise in the future as more people, organizations, and governments are becoming aware of IPv6’s benefits.


Original Post – https://fossbytes.com/difference-between-ipv4-and-ipv6-explained/


Troubleshooting Windows 10

Being a Windows user, it can be any day when PC might run into problems. If we go back almost a decade ago, there weren’t many options for everyday users to fix things on the computers.

What made their situation difficult was the lack of technical know-how. The only feasible way out of the dilemma was to send an invitation to some tech support guy who would charge a hefty amount for a problem that may have required a couple of minutes to get fixed.

Time passed. Microsoft started issuing repair solutions in the form of Fixit executables that allowed even slightly aware users to repair broken things on their own. Now, talk about Windows 10. It includes a variety of built-in troubleshooting tools which can be of great help to the users in need.

How to fix broken things in Windows 10? Use Troubleshooters. Fast and easy.

Head over to Settings > Update & Recovery > Troubleshoot, Windows will shower many troubleshooters upon you. 19 in number, to be precise. It isn’t the fact that Microsoft added them with the launch of Windows 10 itself. They were scattered all over the system; many of the troubleshooters living in the old Control Panel that is slowly getting absorbed into the Settings app.

Each of these built-in Windows troubleshooting tools try to find and repair common issues associated with the software or hardware component it’s targeting.

Here is what you’ll find on the Troubleshoot screen:

Fix internet-related issues in Windows 10:

This troubleshooter can help when Windows 10 can’t connect to the internet or a particular website. The reasons could be many, for instance, the Windows firewall might be blocking the connection.


Fix audio issues in Windows 10:

The troubleshooter comes to rescue users at times when they can’t listen to their favorite music or audio while watching videos. Some audio-related problem might have surfaced.


Fix Printer related issues in Windows 10:

Problems may occur with the printing devices connected to the computer. The troubleshooter covers both physically attached printers and the ones connected via the network.


Fix Windows Update:

It tries to repair the issues which cause Windows from downloading updates. You might have seen a variety of errors being displayed on the Windows Update screen in the Settings.


Fix Blue Screen of Death error in Windows 10:

Also known as the Stop Error, this is probably the most common concerns faced by Windows users. But Windows 10 includes a dedicated troubleshooter that takes the problems in its hands. In case the BSOD error is not caused by some hardware malfunction, the troubleshooter might be able to repair it.


Fix Bluetooth related issues in Windows 10:

In terms of Bluetooth support, Microsoft’s latest OS has improved a lot. It has eliminated the need for a dedicated Bluetooth software we used to have on older Windows versions. Still, some problems can arrive uninvited. So, the Bluetooth troubleshooter in Windows 10 can fix issues that prevent Bluetooth devices from pairing with the OS.


Fix hardware problems in Windows 10:

Nowadays, Windows supports an uncountable number of devices. All you need to do is plug in the device in the appropriate port and it just works. But hardware related problems can range from corrupt drivers to people forgetting to plug in their device properly. The troubleshooter can display errors and fix them if possible.


Fix HomeGroup issues in Windows 10:

As you might already know, Windows users can view and share files and resources with other PCs that are a part of the same HomeGroup. But software issues might prevent them from sharing resources. The troubleshooter can find and remove the culprit preventing users from sharing their resources.


Fix incoming computer connections to Windows 10:

The troubleshooter is intended for the users facing difficulty while setting up remote desktop connections, etc. Incorrect firewall configuration might prevent incoming connections to the computer.


Fix Keyboard issues in Windows 10:

The innocent input device called keyboard can also run into problems. If the user isn’t some beast directing all of their power on the keyboard keys, the issue might be related to some software glitch which could be easily fixed by the keyboard troubleshooter.


Fix network adapter in Windows 10:

There can be problems with the network adapter drivers or some other software issue. The inability of your PC to load your favorite websites in your browser could be the fault of the network adapter. The reason could be outdated drivers, or the card may have malfunctioned. The network adapter troubleshooter checks all the adapters including the ones for ethernet, wireless, and virtual adapters.


Fix battery problems in Windows 10:

An important thing that concern PC user’s the most is the battery life. But sometimes, the system can’t utilize the full juice of the battery due to the changes made to the settings. For instance, the hard drive might be taking too long to enter sleep mode or power plan might be set to high.


Troubleshoot program compatibility in Windows 10:

The newest Windows as a service wants to shower Store-based UWP apps on the users. Still, many legacy software may not run on Windows 10. The troubleshooter checks what older Windows version would be required to run the software and configures the relevant settings.


Fix audio recording issues in Windows 10:

It checks various things such as if the audio service is responding or not, issues related to the microphone, the external mic has been unplugged, etc.


Fix Search Index in Windows 10:

If you can’t see files, emails, documents, and installed apps in Windows Search or your PC slows down when you use search, there might be some issues with the search index. The troubleshooter can check for problems and rebuild Windows search index if required.


Fix problems with shared folders in Windows 10:

Users having trouble accessing shared folders and files over the network can ask this troubleshooter for help. It may be possible that the user doesn’t have permission to access a particular, the tool would be able to inform that.


Fix Cortana related problems in Windows 10:

There could be times when Microsoft’s digital assistant Cortana has trouble conversing with you. She might be able to take voice input, or some audio issue may prevent you from hearing Cortana’s response. The speech troubleshooter fixes Cortana-related problems.


Movies and video not playing in Windows 10:

The video playback troubleshooter fixes issues that prevent a video or movie from successfully playing. It checks if there are any problems related to the video driver.


Fix problems with Store Apps:

This troubleshooter is intended to take care of any problems associated with the apps that users download from the Microsoft Store.


So, these were the troubleshooting tools deep-rooted in Windows 10. They might not be able to fix Windows 10 issues every time, but it is said that something is better than nothing. Microsoft could add more entries to the list in the future.


Original Post – https://fossbytes.com/windows-10-troubleshooter-fix-problems/



Programming Languages Basics

To communicate with a computer, we use computer languages or also known as programming languages. To write a program, we must use the computer languages. A computer language is a set of predefined words that are combined into a program according to predefined rules (syntax). Over the years, computer languages had evolved from machine language to high-level languages.


There are generally three types of computer languages. They are: 1. Machine Language, 2. Assembly Language and 3. High-level languages.


Machine Language

In the earliest days of computers, the only programming languages available were machine languages. Each computer has its own machine language which is made up of streams of 0’s and 1’s. The only language understood by a computer is the machine language. This language is tightly coupled with the computer hardware. It is difficult to write and maintain code in machine language.


Assembly Language

The next evolution in programming came with the idea of replacing binary code for instruction and addresses with symbols or mnemonics. Because they used symbols, these languages were first known as symbolic languages. The set of these mnemonic languages were later referred to as assembly languages. It is easy to write and maintain programs in assembly language than in machine languages.


 High-Level Language

Although assembly languages greatly improved programming efficiency, they still required programmers to concentrate on the hardware they were using. Working with symbolic languages was also very tedious, because each machine instruction had to be individually coded. The desire to improve programmer efficiency and to change the focus from the computer to the problem being solved led to the development of high-level languages.

Examples of high-level languages are:

  1. BASIC (Beginners All Purpose Symbolic Instruction Code).
  2. FORTRAN (Formula Translation).
  3. PL/I (Programming Language, Version 1).
  4. ALGOL (Algorithmic Language).
  5. APL (A Programming Language).
  6. COBOL (Common Business Oriented Language).
  7. RPG (Report Program Generator).
  8. LISP (List Processing).
  9. Prolog (Program in Logic).
  10. C++
  11. Java
  12. Visual Basic
  13. C




Programs today are normally written in one of the high-level languages. To run the program on a computer, the program needs to be translated into the machine language of the computer on which it will run. The program in a high-level language is called the source program. The translated program in machine language is called the object program. Two methods are used for translation: compilation and interpretation.


A translator is a program, which converts the code written in one language into another language. The widely used translators are compilers and interpreters.


A compiler is a translator which converts the program written in high-level language into assembly code or into another form of intermediate code or directly into machine code. A compiler converts the whole source code at once into object code and then executes it. So, compiler is faster than a interpreter.


An interpreter is a translator which converts the source program into object or machine code. The interpreter converts the source code line-by-line and executes it immediately, which results in less performance. Thus, an interpreter is slower than a compiler.


Generations of Programming Languages

There are five generations of programming languages. There are classified based on how close the programming language is to human beings.

First Generations Languages (1GL): The first generation language is the machine language. It consists of only 0’s and 1’s. It is very difficult write programs in machine language.

Second Generation Languages (2GL): The second generation language is the assembly language. Assembly language consists of symbols known as mnemonics, English words rather than 0’s and 1’s. Programs written in assembly language are converted to machine language using a translator known as assembler.

Third Generation Languages (3GL): The third generation languages are high-level languages which are similar to English. It is easy to write programs using high-level languages. Programs written in high-level language are converted to machine language by using a translator like compiler or interpreter. Third generation languages are problem oriented languages. Examples: C, FORTRAN, COBOL, PASCAL etc.

Fourth Generation Languages (4GL): The fourth generation languages are non-procedural languages. Programmers have to specify only what to do but not how to do it. These languages are developed for users having minimum programming language. Examples: SQL, ABAP etc.

Fifth Generation Languages (5GL): The fifth generation languages are declarative languages which are used in artificial intelligence and expert systems. Example: Prolog etc.


Different type of Cloud Services

Cloud platform is seeing rapid growth past few years and for many it is still very confusing with each service provider touting technical terms. Below are the few basic cloud services offered by various companies like  Google, Amazon, Microsoft and Salesforce. For a non IT person, below is perfect explanation in simplest terms.


Difference between different cloud services - Coding Security


SaaS Services

  • Email and Office Productivity: Applications for email, word processing, spreadsheets, presentations, etc.
  • Billing: Application services to manage customer billing based on usage and subscriptions to products and services.
  • Customer Relationship Management (CRM): CRM applications that range from call center applications to sales force automation.
  • Collaboration: Tools that allow users to collaborate in workgroups, within enterprises, and across enterprises.
  • Content Management: Services for managing the production of and access to content for web-based applications.
  • Document Management: Applications for managing documents, enforcing document production workflows, and providing workspaces for groups or enterprises to find and access documents.
  • Financials: Applications for managing financial processes ranging from expense processing and invoicing to tax management.
  • Human Resources: Software for managing human resources functions within companies.
  • Sales: Applications that are specifically designed for sales functions such as pricing, commission tracking, etc.
  • Social Networks: Social software that establishes and maintains a connection among users that are tied in one or more specific types of interdependency.
  • Enterprise Resource Planning (ERP): Integrated computer-based system used to manage internal and external resources, including tangible assets, financial resources, materials, and human resources.


PaaS Services

  • Business Intelligence: Platforms for the creation of applications such as dashboards, reporting systems, and data analysis.
  • Database: Services offering scalable relational database solutions or scalable non-SQL datastores.
  • Development and Testing: Platforms for the development and testing cycles of application development, which expand and contract as needed.
  • Integration: Development platforms for building integration applications in the cloud and within the enterprise.
  • Application Deployment: Platforms suited for general purpose application development. These services provide databases, web application runtime environments, etc.


IaaS Services

  • Backup and Recovery: Services for backup and recovery of file systems and raw data stores on servers and desktop systems.
  • Compute: Server resources for running cloud-based systems that can be dynamically provisioned and configured as needed.
  • Content Delivery Networks (CDNs): CDNs store content and files to improve the performance and cost of delivering content for web-based systems.
  • Services Management: Services that manage cloud infrastructure platforms. These tools often provide features that cloud providers do not provide or specialize in managing certain application technologies.
  • Storage: Massively scalable storage capacity that can be used for applications, backups, archival, and file storage.

Compare programming languages features side-by-side

Programming Languages commonly used features in a side-by-side format – HyperPolygot. Compare, refer and learn easily.



Pass the information on. Share this post and let your friends know too.  Thanks.

Who am I?   |   Contact me   |   Shop


Free e-books for developers

E-books written by experienced developers and is available free. Site has vast categories with many books on popular as well as new technologies. Check it out – DevFreeBooks.


Another similar website is – DZone. It has reference books as well as guides.


Comments and suggestions are always welcome. Pass the information on. Share this post and let your friends know too.  Thanks.


Who am I?   |   Contact me   |   Shop

Syntax reference for programming languages

Found another great website that allows reference as well as searching for syntax for different programming languages along with integration with DuckDuckGo, Slack and Visual Studio Code as well as API’s. Check it out –The programming syntax database: SyntaxDB.


Comments and suggestions are always welcome. Pass the information on. Share this post and let your friends know too.  Thanks.



Who am I?   |   Contact me   |   Shop