I joined Amrita, because I had no other option left. And that turned out to be the best decision in my life. The first time I visited the college, I was pretty excited. I came to know about FOSS Club, and I attended the introduction session given to us.
FOSS club is a student-run club, where its members explore technologies and ideas to enhance their academic knowledge. The club has a robust cadre and they work together for the development of the club. When new students join, their are exposed to unprecedented technologies and teaching methodologies different from schooling system. The club has a very simple policy Code | Share | Grow.
Every student in the club is mapped to a senior who is your mentor. Unlike the bossy and ruling seniors, they were very polite and helped us through. Whenever we face some trouble, they would come sit with us and tell us what not to do, what to do and help us figure out. Our relations with our seniors are were even more than a mentor-mentee relation. You can get advice on any matter from your mentor. Apart from our seniors there are mentor’s who have years of experience handling the club. For me, whenever I get into a dilemma I approach them and they provide me with the best solution. To be honest, I ask very dumb questions sometimes, but they were never hesitant to give me a reply. It’s not tough to spot selfless people in Amrita, and this is one place where you can spot a few.
As for any engineering student, classes were pretty boring for me except for a few personal likes, probably because of the teacher or because of the subject. But the one thing that kept me loving this place is FOSS club. I would wait till classes to end and straightaway I run to the club. I spend around 5-6 hours in lab, working on different tasks/projects and all.
My time in lab goes mostly like this, I spend 4 hours in my work and some days less than that. Rest time would go for club activities and club development work. Being in FOSS club you will be proud to have a wonderful team with you. There are students working on different streams like Web Development, Android Development, Open Source, Competitive Programming. Each student in the club has a responsibility to the club apart from their personal works. There by we assure everyone contributes to the development of the club. We organize talks, debates and conferences for our students. Apart from these we have regular sports and meditation sessions that focus on keeping our mind and body fit and healthy. So what makes our club different from the other technical clubs?
FOSS club is not just about developing your technical skills, but it helps to develop you as a better human too. The club helps to develop your technical skills, emotional and mental skills that can mold you into a better person. And how does this happen ? Just follow what your mentor says. He knows, what is right for you.
For instance, during my winter vacation in first year, Vipin sir asked me to attend Gitamritam Camp. Most of my friends refused hearing the name. But, I wanted to try it out. So I said yes and went for the camp along with one of my friend. Even during the journey, I had second thoughts, because I never attended such a camp and I was confused. But attending the camp turned out to be one of the best things in my life. Soon, I started attending the Gitamananam session, which was even a deeper version of Gitamritam. Not just this, I remember when I was scared to go to Israel alone, it was my mentors who encouraged and supported me to go and experience how it is like being in a new place. And the most recent one, I am in Taiwan doing my internship all because of my mentors.
Throughout the past three years, I had both good and bad times with FOSS club, but the skills I gained, the love and care I get from my mentors are more than enough to complement the hard times I had.
I can technically go to another college and be a student, but I won’t get another FOSS Club. I have got a family in the club that is irreplaceable.
I was all set with my backpacks to travel to Jaipur, with my friends. This was my first conference where I am gonna give a talk. Exciting isn’t it? But, I was freaked out inside, as I have never given a talk ever.
Srijan and Chaithanya accompanied me all the way to Jaipur for the conference as both of them had their roles as speakers. The conference was scheduled at L.N.M.I.I.T College, Japiur, hosted by WikiToLearn and KDE Community. We reached Jaipur late at night by 1:30pm and it was freezing. We reached the college around 2:00 and jumped under the quills to get some warmth.
An alarm at 8:00 to get ready for the conference, woke me up. We got ready and by the time we were about to get out, two beautiful girls came to escort us to have breakfast. I never expected that. Advantages of becoming a speaker. Get treated like a VIP : D . Soon after breakfast, I got to meet two of my seniors from college, Tony Thomas and Harish Navnit. We were excited to see after long. I sort of felt being in Amrita for some time.
The Conference began around 11:30 in the morning with Sagar’s talk on KDE Open Source Ecosystem, followed by Riccardo’s Keynote session, which sort of inspired the kids to lean in for the upcoming sessions. I was excited to hear the first lady speaker’s session on Open Source Opportunities, which sort of disappointed me, but who really impressed me with her work. This talk moreover, showed how important personal branding is important, followed up with the GSoC Projects done in WikiToLearn and KDE by Abhimanyu and Jay. It was a pretty exciting day for me to get to know the fellow speakers and their journey through open source. Knowing that I still had a few days to go in Jaipur, I tried exploring some parts of the college and understanding the differences there from a South Indian College. Moreover, I made more friends there during the workshop session, which extended teaching them git and running python scripts. The day ended with a song from ruphy. (I have no idea what he sang, but it was really awesome to hear a music in cold around fire).
The second day of the conference, was even more interesting where I got to meet more students, hear more awesome talks. The session started off with Tony’s session followed by Harish session on Modern day Make File Systems, which was a new topic for me. I was happy to hear my friend Chaitanya’s talk on Connection Rural Women over Internet, as it was quite a very different topic from the others. The next was my session on “Exploring the Engine behind the wiki pages”. Well, I was disappointed after my session, as it did not turn out as I expected. Reading the faces, I felt my topic was way over the head. But, it was to be like that as none of the students had an experience with Open Source or Linux. I am at least happy that a few students came in touch with me to do their first contribution to the community. Amit concluded the talks with WikiData, an excellent area of contribution to Mediawiki codebase, which was introduced to me by Abdealli. Soon after the conference, we speakers left to the workshop to answer the question of students. We kept an anonymous Q/A session and, I could see all those doubts which took me back on flashback when I started off with my contribution. I was happy to see confused minds because only confused minds can question and figure out the answers. Our day ended with meeting Mame Khan, a Rajasthani Folk singer, who came for the Arts Fest in the college. Finally, we managed to get a pic with him too.
Early in the morning, we were off to explore Jaipur and Agra. Fetching a hot coffee from one of the tourist places, we drove all the way to Agra visiting Fatehpur Sikri and Tajmahal. The way was filled with lots of fun, laughter, freshness, where at the end of the day I had to say bye to Jaminy who left back to her college. We all headed back to Hotel, where again I jump under the quills to get some sleep. I woke with some cracky noise of Chaithanya ringing Srijan’s door and I couldn’t even remember she saying me a bye. By 8:00 am we were off to visit one of the largest forts in India, which took about 100 years to build. With its amazing architecture, from the great Indian brains took me back to my history classes, where my teacher used to say how Amazing our Country was. Indeed it was! With a heavy and tasty dinner from Abhimanyu’s home with all the warmth and love, I left to the airport to get my flight back to Kerala.
Those four day, enriched me with knowledge, gave me new friends to count on to and a family like WikiToLearn to be a part of!
One of the most interesting aspects of TCP is that data get transferred as Segments from the TCP layer. Yeah! I know you will then ask me you told data to get transferred as packets right? How come you say segment now.DThe difference between segment and packet?
Segment = Transport Layer = Transport Header + Data
Packet = IP Header + Transport Layer = IP Header + (Transport Header + Data)
At each layer the data is getting encapsulated!
What is Segments do? What are the different roles Segment has?
The segment can be called as the “Jack of all Trades” messages – they are flexible and serve a variety of purposes. A single field format is used for all segments, with a number of header fields that implement the many functions and features for which TCP is responsible. One of the most notable characteristics of TCP segments is that they are designed to carry both control information and data simultaneously. This reduces the number of segments sent since they can perform more than one function.
What are the functionalities offered by headers?
In basic these are the functionalities:
- Process Addressing
- Sliding Window (Catch me up in the next post to learn about Sliding Window)
- Control Bits and Fields
Look the Below table for better Understanding.
|Source Port||2||Specifies the 16-bit source port number|
|Destination Port||2||Specifies the 16-bit destination port number|
|Sequence Number||4||Helps in ordering the packets|
|Acknowledgement Number||4||Helps in establishing the connection|
|Data Offset||1/2||Specifies the number of 32-bit words of data in the TCP header.|
|Reserved||3/4||6bits reserved for future|
|Control Bits||3/4||Explained Below *|
|Window||2||Indicate the number of octets of data the sender is willing to accept while receiving the ack no.|
|Urgent Pointer||2||Used in conjunction with URG control bit for priority data transfer|
|Options||Variable||Generic method to add one or more optional sets of data/|
|Data||Variable||The data to be transferred.|
Control Bits * : These are the bits set to inform the communication in TCP.
|URG||1||When set 1 indicates Priority data transfer.|
|ACK||1||When set to 1 to the sender is carrying Ack no|
|PSH||1||Enables the Push feature.|
|RST||1||The sender has encountered a problem and reset the connection.|
|SYN||1||The synchronization bit is used to request Sequence numbers and establish a connection.|
|FIN||1||The Finish Bit is used for closing the connection|
Well, this is it with TCP Segment and if you have any queries post here and I would reply.
To see the changes in the code with Segment check my Github!
Hello guys! It took me some time to understand some concepts that why I got delayed with my next post.
Just to note our connection part is not over. I just figured out an important part of connection which is titled as “Sequence Number Synchronization”
I hope all you are aware of the concept of Sequence number else go to the Link.
Consider there are two devices A and B which is trying to establish a connection. We know when they are sending data each data packet would get a packet number/ sequence number. What if both the devices send with the same sequence number. It’s not compatible, right?
To remove that we introduce this new feature. Before A and B sends in data they first make sure that they exchange the initial sequence number they want to use. It is also called as ISN. But there can also come an issue if segments after the ISN get the same number. For that, we use a counter. ISN is choosen using a clcoked counter that increments every 4 microseconds. The counter is iniatilsed when the TCP is started. A new connection to be estbalish would take in an ISN starting from the last one. Here we won’t have the issue of conflicts as only 4 hours a repition of Sequence numbers can take place and by that time the packets would have been transfered.
Note that both the devices sent to each other their ISN’s.
As said in the last post, we would be discussing setting up a client-server connection. But we can setup a connection in different ways. Here we are going to discuss the three-way handshake to setup a connection.
Consider the below diagram where we are having a client and a server and the client is running a browser for instance.
Imagine if the web browser wants to send in some information to the server. Before sending the data we should be establishing a reliable connection between the client and the server.
The client starts to set up a three-way connection to the server by sending the client a SYN packet. The SYN packet basically consists of a sequence number that tells the server on how to connect the client.
The server then sends back in the client a SYN + ACK where ACK denotes the Acknowledgment telling that it has received the request.
The server then client then sends a confirmation acknowledgment noting that it has received the SYN + ACK.
Hence the connection is established.
We similarly have a closing connection for the three-way handshake which is up to you to find out.
I would be implementing a three-way handshake in the TCP/IP implementation.
To check out the progress of the application click the Link
>Have you ever wonder how the email or message you send reaches the other person? It’s a simple process basically but to implement is quite difficult.
In my upcoming posts, I would be giving steps to implement a TCP Stack. For that first, we need to understand the concept on how messages or details get transferred across networks.
There are basically two network models via which we can transfer data:
- OSI (Operating Systems Interconnection Model)
- TCP/IP (Transfer Control Protocol/ Internet Protocol Model)
OSI basically has seven layers across which the data get transmitted. The seven layers of OSI model are:
TCP/IP model has four layers which are explained below in detail along with an example how it works:
- Network access
The Application layer is where user interaction takes place. Application layer makes sure that the data sent in the format which is understandable to the recipient. For example HTTP, FTP etc.
The Transport layer is where the data is broken down into packets by using the TCP/Transfer Control Protocol. It adds segment number and port number. Port number specifies the port to where data should be transferred and segment number makes sure the broken down packages can be reassembled.
The Internet layer makes sure that it reaches the correct destination. The IP/Internet Protocol adds the sender’s and recipient’s IP address. Here we create the socket. The socket is basically used for establishing connections which include the recipient’s IP address and the port number.
The Network access includes both the Data-Link and the Physical Layer in the OSI model. Data-Link makes sure of transmission through Ethernet for instance. Physical layer makes transmissions through Hardware. The Network access layer adds the MAC address of both the sender and receiver.
Here is an example to show the transmission of the message below:
Good morning Aditi!
Above is the message you have in the Application layer, which gets in the below format. Note that I am using XML format here:
Each of them in a gospel tag goes as a separate packet when it enters the Transport Layer.
Here we add the port number as 60 and each of the segment number. Now when it is passed to the IP Layer we have:
We have the IP address of the sender 22.214.171.124 and that of the receiver 126.96.36.199. The socket can be written as 188.8.131.52:60
The Final layer of the Network access Layer would look like:
We have the sender’s MAC address starting with 00 and the receivers starting with 11.
Once the message reaches the receiver there it is unpacked by traveling through the each of the four layers in the reverse order and the segment number makes sure that the packets get arranged in an order.
The next post would be based on setting up a server-client connection to start with the TCP stack!