 So, I hope you had an interactive session with Professor Sridharayar, we will talk a little bit more about these sessions when I discuss the homework tomorrow. So, for now we will get back to the schedule which is I will right now give you an overview of the upcoming lab in the afternoon, after that we will again do some question and answer session based on both the labs as well as the concepts. So, the upcoming lab is on socket programming, if you want to write any networking application be it a web client web server or email application or chat sessions or peer to peer applications socket programming is a must. So, socket programming as such you could do it in Java, you could do it in C, you could do it in C++, you could do it in Python. We often when we hand it to our students we ask them to write in C C++ because that is when they get to know lot of the internal details, Java hides many aspects to at the higher layers, it just opens very few clean APIs, but when you start coding in C++ you get exposed to lot of the internal details, Python is something that people have started to use now that is also pretty good, you could it is clearer than C++, but up to you you could do socket programming in any of these languages, but for now we will focus on doing it in C. So, what this exercise is basically you are going to write a very simple file transfer protocol using socket programming. So, file transfer protocol is a client server based architecture. So, there is a client, there is a server. So, the role of the server is rather simple is basically going to be running on a machine waiting for incoming TCP connections, listening on a specific port. You are not going to use the port corresponding to FTP because that is a standard port you cannot normally use it at the application layer. So, we will use another application approved port for example, 5000. So, the server is listening on this port waiting for connections and what the client does is the client is going to read a file name from standard input. So, when you run the client program it will ask you for what file you want. So, you type it in and then what the client does is it is going to establish a TCP connection to the server and as part of this TCP connection it is going to send this file name to the server. Now, what the server does is it is going to read this string that has come from the client that represents the file name and it is going to see for the corresponding file. If the file exists at the server it is going to transfer the file to the client and then it will close the connection for the client and wait for the next connection from another client. So, this is what you need to do this is kind of listed all in this particular socket programming instruction sheet. So, what we are going to do is I mean this is just a 3 hour lab if you are not at all familiar with socket programming it can get overwhelming. So, what I would suggest is you I had already provided a video on socket programming if you have not already gone through it spend some time going through it is not a very long video. There are also slides provided as part of that particular concept you can also go through the slides. Apart from this even to make things even further easier we have provided a template of the particular program. So, this is a client template that has been provided to you so, you download it and as you can see it is a fill in the blanks all you need to do is fill in the blanks based on your understanding of the socket programming as I said lot of these functions are available in the slides as well. So, you need to go through the slides understand what each function does and accordingly fill up the blanks in here. A few things to note in this context so, ideally you should try your client on one machine and server on another machine, but at the beginning I would suggest that you run both of them on the same machine. When you are running both the client and the server on the same machine and you want them to communicate you need to use this loop back address or the local host address as the destination address. So, both the client and server are running on the same machine they may be listening on the server may be listening on some random port let us say 5000 and the client is going to contact the server on the port 5000. So, this communication is going to happen within the host and you still need to deal with IP addresses thereby you are going to use the loop back address which is 127.0.0.1 as the IP address. Now, once you check that your program is running correctly within your machine you can pair up with your neighboring team and use their machine. So, you could run client on your machine and the server on their machine and test it similarly they could also do similar testing using your machine. So, when you are using another machine you do need to change the destination IP address corresponding to the IP address of your neighbors machine. So, this is with respect to the socket programming assignment. So, a quick recap go through the video go through the slides the template has been provided. So, understand what is expected fill in the details in the template and then execute the code run within your local host first using the loop back address. Once it is working fine pair up with someone run on different machines and ensure that it is working correctly. So, I am now open for taking questions related to the lab first. So, we will have this session till may be 12, 10 or something after that we will do concept based questions. Ma'am as we I have gone through the NS2. So, NS2 is developing two languages 3 plus plus and TCL. So, how these languages communicate and pass the parameter to each other? Ok. So, in turn as I said the front end is TCL which is basically used for setting configuration parameters. So, as part of TCL you are going to set certain you are for example, you may set a link bandwidth to be 1 mbps delay to be 50 milliseconds so on. So, all these parameters are set via the TCL script. So, internally there is what is it called a thing that reads the TCL script extracts these values and passes them to the appropriate modules as arguments. So, that is within the internal it is kind of hidden unless you are doing coding where you are trying to do things within NS2 it is not quite obvious to someone who is basically using the simulator to run well known examples. In NS2 while doing practicals when we configure a network in node communicates to another node which is a destination, but we do not give any we do not assign any IP address to the nodes. So, we are confused like how the node actually do the discovery process in NS2 because no way we are assigning any IP addresses we are simply creating the nodes we are creating the opacity as an study node. So, how this mechanism IP address actually is involved in NS2 we are not aware of that. So, NS2 actually I mean it is in fact, one of the drawbacks of NS2 in that it does not deal with IP addresses. So, identity the node ID which is node 1, node 2 whatever ID you are giving is what is used as the address for that particular node. So, when you are creating links between nodes and you are specifying all that even if you see when you are setting up TCP you specify within a node you are linking up the TCP sync and you are making explicitly connections between who the TCP source is, who the TCP sync is and you are specifying through the tickle exactly where these things are. So, as you specify that it establishes internally that this is the originator of TCP and the sync is in that particular node. So, there is no major concept of routing I mean there are routing protocols also, but if the kind of program that you have handled the simulation that you have handled there is no specific routing in other words it is kind of a static routing. It is hard coded that packets from here if there is a path along the links it will just figure out that particular path and give it to the other end. It was a basic topology of 3 nodes and 4 nodes. So, like we tried to also analyze the packet, but we could not find any IP stealer we thought maybe some default IP is being assigned like you are saying every node has a ID there is a discovery mechanisms, but we tried to analyze that we could not find anything even in yesterday's topology. It is not there. As I said there is no concept of IP addresses. So, if you see the tickle the trace file of NS2 you will see some of the source and destination which is indicated as 0.0 and 1.0 something like that. So, that the first 0 refers to node ID which you can view it as an IP address and dot 0 that 0 can be viewed as a port and interpreted accordingly. As I said this is NS2 is a simulator it has not quite been modeled based on the actual working of the internet. This is Sunil Shinde from KLA MSACERY Engineering College, Balgam. So is there any tool to generate TCL scripts? Tool to generate TCL scripts I mean I mean you depends upon what is it there is no TCL scripts are based on the user who wants to use the simulator what parameters he wants to give. So, you could basically write some bash scripts to what is it called create a configuration file. For example, if you want to create a topology consisting of n number of nodes and there is some structure to that particular node you could write a bash script to generate a TCL script based on that particular topology or if you are fine for example, doing some experiment which involves some random for you want to do use random seeds for which again in the TCL you may have to specify what that random number is. So, again you could write a bash script to come up with the random numbers and thereby write the TCL script based on bash scripting, but you need to be very clear on what exactly is it that the TCL script it is more or less like you want to generate the output in a particular fashion that forms the TCL thing you could either write a C code or bash script or whatever it is to generate the TCL script of interest to you. Dragging and dropping the nodes or links and we can generate any TCL script that is what I was asking. That is what I am saying. So, you have specific topology in mind and you want to generate a TCL script that captures that particular topology. So, you can write C program or you can use bash scripting to generate such a TCL script in NS2. NS3 as I said probably has a GUI which will permit you to create topologies without too much effort. Yes ma'am, my question is that in the MOOCs model if the take is very large so it is very tough to interact the one to one students. So, how we can implement this for intake of 90 or 60 students which? I have covered it as part of the flip classroom lecture. Typically even here at IT Bombay we deal with 100 undergrad students in a class. So in a flip classroom setting they watch the videos wherever what they want it is not really one on one there. So when they come to the face to face tutorial I basically divide up the class into three groups whereby I am handling only about 30 to 35 students at a time and I give more one on one to them in the face to face interaction. I had the question that few of the commands in TCP dump and Wireshack are not working in few terminals here. Can that be because of the firewall that is installed in the LAN here? You need to be more, I need more details on what actual commands did not work. TCP dump dash W that command is not working. Can that be because of the firewall? Nothing, TCP dump is very local to your machine if TCP dump minus W we have to give an argument which is the file name. So first of all you need to ensure that you have given you have given the right command in other words minus W should be followed by a file name if you have not given naturally it will complain. The second is even if you have given it and it is not able to write to the file you have to check that the file has the right permissions that in other words TCP dump has the permissions to write into files it is a local thing I do not think anything external has to do with it. Ma'am I am having the question that if we are doing the send UDP dot C using that this file when we are sending the file with the size of 4000 byte that time we need to check that what are the different IP fragments are there. So I have checked that there are it is in the works are it is showing that 4 protocol to IPv4 one UDP and one ICMP ICMP for unreachable port but 2 IPv4 it is giving that size 14188 and in the UDP when you click the UDP that time it is giving the remaining sizes it is ok but how it is given each and every protocol having the 4 layer protocol UDP also it is having the IPv4 IPv4 protocol also having IPv4 IPv4 and ICMP also having the IPv4 so how works are is giving the protocol name as only IPv4 UDP ICMP. So wire shark has lot of internal details where it makes use of so for example it will examine the link layer frame type and it will specify it as the upper protocol is IP based on that it will display the upper packet as an IP packet. So wire shark has lot of this information encoded as part of it so it can detect what are all the application protocols by looking at the port number it will detect whether it is ICMP or IP or something else based on what the frame type is within the link layer. So it has all that intelligence embedded within it so based on that it can make sense of what packet corresponds to which protocol. Ma'am in yesterday exercise lab 4 is there any type identifier available in trace file to find how many number of packets are sent. So there is an identifier so the last I mean I have to pull up I do not have the trace with me but each packet that is generated has a unique identifier assigned as part of NS2. So that is also listed as part of the trace it goes by the name A sequence or something this I think is the very last field or something. So packets have sequence numbers those appear as part of sequence numbers but sometimes if a packet is lost you retransmit the packet with the same sequence number. So the sequence number may be the same but this S sequence number will be different because it is a new packet that was generated within NS2. So depending upon the sequence numbers you could calculate depends upon what your goal is. If you want to know how many packets were fully generated you just have to look at the sequence number but if you want to know how many packets were actually uniquely generated then you have to look at the A sequence number to figure that out. Ma'am in the second exercise yesterday there was a question to plot a graph using the trace file of the GNU cloud. So the GNU plot could not give the clear result so is there any other way by which we can plot a graph? Plotting graphs GNU plot is just a utility you could use the excel you could use open office equivalent which is xcalc you could use xgraph you could use any plotting tools that are there out there whatever you are comfortable with. I mean original file can we transfer the instead of sending the packets can we transfer the file? Yes I mean NS2 you could potentially write I do not know if it already has but it is definitely feasible to use NS2 to do it where you can write application where instead of artificially generating data you can ask it to read from a file and send it. I do not know this if FTP permits that option I it is been ages since I have coded anything in NS2 but if it does if there could very well be such a feature as part of NS2 but if it is not there all I am saying is you could very easily even write a module that does it for you at the C++ level. Ma'am what is the logic for getting the half count from the trace file? What is the logic for? Getting the half count from the trace file. Half count? You got the trace file you know from that can we estimate the half count? What is half count? Half count. Hop count. That is number of. Which trace file are you talking about? Trace root or NS2 trace file? NS2 trace file. NS2 trace file as I said yeah you could potentially figure out by the how many hops a particular packet has taken by following the nodes that the packet has crossed as I mentioned each packet has a unique sequence number or a sequence number you have to write a script that find out where all the entries the lines that the packet is listed and then look at who the source destination is and you can figure out what the half count is. It is a matter of writing an appropriate script or a C code to evaluate the trace file to get that information. Ma'am I want to ask question that whenever we are creating socket what type of file changes occur in the system and if there is a separate socket file is created in the machine how to check how many sockets are created from single machine. So, what happens when you I mean I had mentioned this as part of the video also whenever you are opening a socket basically one can view it as opening a file except so what happens in a regular program you open a file you write into it and you read from it. So, basically that is how you manipulate files. So, in socket programming also when you open a socket you could think of it as opening a file. So, whatever you send on that socket you can view it as being written into that file and whenever you are reading from a socket you can view it as reading out of that particular file. So, what happens internally is whenever you open a socket internally at the kernel level you are going depends upon if you say TCP socket or UDP that is connection oriented or connectionless socket. Accordingly if you mention it as a connection oriented socket then you are going to establish a TCP connection based on whatever information you have passed in creating that particular socket. So, in then whatever data you are going to write into the socket the TCP will take it into the buffer and send it out based on who the destination address you have specified in creating the particular socket. So, once you have this interface of a socket you are just pushing data into it and pulling data from it internally TCP is going to manage that particular data that is what is going to happen. So, you are regarding your next question as to what are the sockets that are present in a particular host netstat netstat is a command that you could use for figuring out what are the sockets that are listening what are the sockets that are open. It is again a very sophisticated command you can figure out lot of information with it, but netstat is a command that will tell you lot of information about the connections. It will tell you how many TCP connections are in established phase how many are in time wait state. It will tell you what are the ports on which you are listening all that information it will tell. So, you can explore that command further to figure out this information. While once socket is executed suppose we are using C programming. So, their object file is created. So, can we consider that object file is a treat as a socket file or separate socket file type format is available in the system and if available how to check where is that particular socket file is present. So, there is nothing called socket when I made an analogy with the file it is just an analogy it is not that there is a socket file sitting in there. Socket is like a at the kernel level when you are opening a socket I am saying you could view it as a file creation, but there is not anything called a socket file that is sitting there. It is just an interface through which you are passing packets from the application layer to the transport layer. There is no file for you to look at. Ma'am I had one doubt our family of students had asked one question. What is 5-4-3 rule? Ok. So, I think this is in the context of Ethernet length if I am I mean. So, Ethernet has a rule called is it I mean I I mean it is a you have to specify the context in which it was all asked also. So, 5-4-3 rule I think is maybe 500 meters, 4 repeaters something like that in the Ethernet context that captures what is the maximum length you can support in Ethernet. What is a triple X in network and they have as the packet assembler and assembler also ma'am. See all this there should be some context behind it. The assembler yeah there are many packets many places where you assemble packets and deassemble packets which could mean you are stripping of the headers adding headers creating packets. So, unless you provide more context it is not easy to answer the question. Ma'am the title of this workshop is Introduction to Computer Networking. But even though some interesting facts have been given regarding computer networking during the lab assignments, but I am wondering that most of the emphasis has been on the teaching methodology. So, do not you think that the title could have been the teaching methodology in general and some other courses specific to technical cadents as a separate course. So, I would not quite agree with you because there was one month phase which was the equivalent of one week of potentially these workshops used to be conducted two weeks where the one week has been put up on the online phase and the online phase was anything but teaching. So, you have learnt lot of computer networking concepts. Even if during this one week of face to face if you see we are spending only the morning sessions which is about one and half hours in 6 hour day schedule on something related to teaching. I thought it was important to include the teaching component because we are all teachers, we are learning all this concepts, we are learning all this stuff. So, finally you have to deliver based to your students based on what you have learnt. So, if you look at it out of two weeks equivalent of work the amount of and if you say 6 hours per day roughly. So, it is something like 6 into 6. So, let us say 6 hours per day and we have 12 days. So, that is the total amount of work amount of time we have hardly spent what I would call is maybe some 7, 8 hours on teaching. So, I think it is a very small percentage of the total amount of time spent on teaching methodologies that is. Ma'am in case of socket programming as it is protocol independent method and it incorporates connectionless and connection oriented packet transfer among the processes. How can I detect the connectionless and connection oriented packets through the results? So, see when you are doing socket programming you are explicitly specifying whether you want connectionless or connection oriented. So, that is in your control. Once you specify whatever it is connectionless or connection oriented then connection oriented will generate TCP packets connectionless will generate UDP packets. And if you were to run TCP dump or anything you will see the fact that whether you have used connection oriented or connectionless based on whether you are seeing TCP packets or UDP packets. Ma'am, is there any procedure told to change the MAC address of network card? Yes, it is very much possible to change the MAC address of network card. For example, if you are using Ubuntu there is the slash etcetera network interfaces file you can specify the MAC address in there. I mean there is a specific format you have to specify it in I will leave it up for you to figure it out. And then naturally after you change that file you have to restart the network services you can just Google I think it is it will be there in many places. So, based on that you can definitely change your MAC address that is in Ubuntu. Windows also there will be similar such mechanism. So, first question is regarding trace path. So, in trace path as already you have mentioned. That is some routers are maybe refusing to send the ish mp messages. So, exactly what is the specific reason band? Is it for the security reason or something else? So, lot of times the I mean there is a good reason why they do not want to indulge in this type of thing because routers are you want your routers to be extremely fast where they are spending useful time forwarding packets rather than dealing with that kind of additional work and it is also a security concern. Sometimes for example, you could bring down a router just by pumping lot of ICMP type of where it has to reply you could just bring down the router based on that kind of. So, you could launch an attack based on expecting it to reply based on ICMP in which case you could bring it on a router because all its CPU is being used replying to these particular messages. So, there is a security angle and sometimes even for performance issues where they you do not want the router to do unnecessary work and let it focus on what it is intended for which is forwarding and so on. So, that is one of the reasons why routers do not implement it. So, when you go for talking about a switch. So, let us say based on what parameters exactly I should go for whether it is a layer to switch I should go for or layer to switch. See, it depends upon what your intended goal is also. So, for example, if ok. So, let us say there is this department which is the CSC department and then there is another department which is the EE department and then what you want to do is you want to interconnect both these departments. So, if you were to use a switch layer to switch to interconnect them more or less what you are doing is you are forming an extended LAN. So, whatever broadcast messages that are going to be sent in CSC will also reach EE. Similarly, EE broadcast messages are also going to reach CSC. If the number of people in CSC EE are less maybe this is fine, but if the number of people are more or they have some other concerns you do not want to use a layer to switch to interconnect them. In which case you should do a layer 3 switch which is basically a router that will not pass such traffic between them. So, it is a question of the scalability, the number of horse, the cost, layer 2 switches are cheaper than routers, the maintenance. So, system administrators have to think of many of these things in deciding whether to use a layer 2 switch or a layer 3 switch. In the network animated we are viewing packets in the forward direction and with respect to the time slot. Now, when the time bar is slided backwards the packets are moving in the opposite direction. So, our concentration is generally from source to destination the packet transfer is. So, why that is happening actually, why the reverse of the transfer is happening in the video, the animation. I do not know exactly, I mean unless you show me what is happening it is difficult for me to comment on, but typically if you are moving the time scale on the network animator all you are doing is asking the network animator to start the simulation at that particular time. So, when you are moving from forward to the back it is kind of you know this is like in videos it is like rewinding kind of a thing and from that point on it will start to play again. So, unless I see what exactly you are talking about it is not easy to answer. Yeah, this is regarding socket programming. Whether people are still using the socket programming to send the data from source to destination or they have moved to some other concept or technology. No, socket programming is the default I mean everyone wants to write any network application you need to use socket programming that is also goes by the name network programming. So, but there are different see underneath it all is C some C libraries and C++ just to make things easier you will see you could do it in Java as well as Python, but they are interfacing with some C++ modules internally. So, yeah socket programming is very much the thing that you are going to use to write networking applications. One more question regarding the socket programming. When you read the clients our programs sometimes we mention the destination IP address as a low back address like 127 001. Yeah. And sometimes we also mention the destination IP address as 0000. Can you throw some light on these two IP addresses? 0000. Yes ma'am as a destination IP address. Destination IP address 0000 I mean there is no such where exactly I mean I have never seen it being used in the country. Whenever you do socket programming when you are specifying destination you leather specify a local host which is the loop back address or a valid destination IP address which could be your neighbors let's say 10.129 or whatever it won't be 0000. Local host address is also working like 127 001. And at the same time this 0.00 is also working and I couldn't understand the difference. What do you mean working where? Using what? It is working similar to the loop back address 127 001. In place of that this 0000 is also working I mean some transmission is taking place. In when you used what code send UDP or are you talking about the socket programming code in what context is it that you are talking about? In the socket programming in the client program in the destination IP address we use 127 001. You wrote the client program or the client program that I have provided? Yes. In the program that you have provided it is mentioned as 127 001. Okay fine I got confused. So the thing is when you are writing socket programming when you specify the IP address as 0.0.0.0 that is an indication to the kernel that see I don't know at the higher level what my IP address is you figure out internally what the IP address is and put it in the packet. Okay so that's just saving you some effort when you are writing socket programming. But if you are actually sending out a packet they will not be for example when you are executing the client.c and you have to specify who the destination is you cannot specify 0.0.0.0 because that's not a valid IP address but internally when you are writing the socket programming if you don't know what your IP address is if you specify 0.0.0.0 when you are executing the socket internally the kernel will figure out the IP address for you and put it in that particular packet whatever it is sending out does that clarify. Yes that means we can use 0.0.0 also. Yeah you could use or you could even find out and give it it doesn't matter you either you give or you let the kernel choose for you. Madam I have a question regarding socket programming in socket programming there is a warning prompt like segmentation fault why it occurs when you are writing the socket program like client server or client program or server program sometimes a kind of a warning or error comes like segmentation fault. Why this type of error? Okay segmentation fault means you have done something wrong in so you are see whenever you deal things at the kernel level it depends upon what program you have written if you are creating packets and not clearing up the memory it can result in segmentation fault especially in the kernel space if you don't pass proper arguments sometimes or the buffer gets overflowed many things can cause segmentation fault but that reminded me of wanting that I should mention some other thing with respect to the socket programming assignment this is a generic thing which all the remote center should pay attention. So sometimes what you will see is you run the server on let's say port 5000 and then you kill the server because you want to rerun it again for whatever reason then you will see an error that says bind failed in when you try to bind the particular port 5000 again you will say that the bind has failed this arises because of the TCP state maintenance. So typically TCP waits in this state called time wait state for up to 60 seconds depends upon again it's an implementation parameter. So during this time if you are trying to run the server again and asking it to bind on that particular port the bind is definitely going to fail. So there are two options or even multiple options here one is wait for some time at least one minute or two minutes and rerun the server the other is if you don't want to wait use a different port don't use the same port as you have used earlier the third option is you could handle it via socket programming itself by I mean there is some code that will prevent this bind fail error I won't get into those details so the third option is for advanced people who want to figure that out on their own but when you are doing it if you see this error be wary that such an error may come in which case you have to either wait or change the port. So the first question is any port under 1024 is a reserved port you cannot use it at the application layer you can only use it if you have root permissions and for example if you are writing a web server then you can use port 80 but typically for the kind of exercises we do all the ports under 1024 are reserved so you cannot touch any of those ports. Now regarding your question of feeding traffic into wire shark as I said while you are doing the server client communication you can definitely run wire shark TCP dump to see what are the packets that are getting exchanged. So I mean I keep telling this again and again wire shark TCP dump are utilities when you run from the time you ran till the time you stop it whatever packets are going out or coming in to your interface it will just make a log of it that is what TCP dump or wire shark does and if you want to capture packets that are going on the local loopback address which is the local host address if you directly run TCP dump it will not capture those packets because they are not going out of your interface you need to be use minus I LO which is the loopback interface for you to capture those packets. It may not work in by the way I would not be surprised if in some systems it did not work. One more question in MS2 in MS2 simulation is it possible to simulate any type of existing network topologies or not. Any type of? Topology. I mean you can create any complex topology it definitely possible to create different topologies as part of NS2. In fact NS2 also has models for mimicking mobility and stuff so you could create topologies in NS2. So actually we will stop here with respect to the lab and we will take up some concept based questions so we will take some questions that were asked earlier through the remote centers so this question is from remote center 1279 so the question was can same IP address be given to a host as well as a router if not will it work if not why and suppose we want to add 200 systems in a network with one IP address is it possible through subnetting or supernetting. So the answer is IP address is a unique address which you are giving to one specific interface if you assign the same IP address to multiple interfaces be it within the same host or be it to different host and a different router things will not work because the routing protocol will get confused as to where it should send the packet to. So each interface needs to have a unique IP address so that is the basis for routing now the question about can I add 200 systems in a network with one IP address through subnetting or supernetting so I think some of the people have confusion about what is IP address and what is IP address mask so when you say I have one IP address which means all four fields so for example 15.14.1.27 is an IP address now I have filled in all the bits as part of this particular IP address now this IP address you can assign to one host you definitely cannot assign to 200 either through subnetting or supernetting or whatever it is that you want to do if you want to use subnetting you basically need a mask which is 14.1.star if you have something like this where this has been assigned to your organization when they are assigning this they are saying you can use all these 8 bits that are here and 2 to power of 8 users you can assign thereby you can support 200 users so this is what I would call a class address this is a specific IP address so if you are given something like this you can definitely use subnetting to assign for the 200 users if you are given something like this which is a complete IP address that is specific only to that can be given only to one host that said there is something called NAT which I have not covered as part of the course but we do have a video on this as well through the use of NAT you could use one IP address as part of some gateway where internally there are these 200 hosts each of them have a private IP address it is not that they do not have any IP addresses they have a private IP address that could be in this 10.star.star domain this is a private IP address space but this can have just one single IP address and you can still manage using this configuration to communicate to the outside world as well as receive communication messages from the outside world so this is possible through something called NAT but in general if you are dealing with public IP addresses one single IP address will not permit you multiple hosts to use the same IP address so another question that was asked is when you ping the loop back address a packet is sent where this is from remote center 1090 so when you ping a loop back address what is basically happening is the following so you have this is a kernel with all this network layer, link layer so on so forth and you have generating at some user space you did some ping so some packet got generated its come down when it is loop back it is going to go up again so that is the concept of a loop back so it will come all the way it did not go out by the way it does not come to the physical layer it just goes out in this fashion so it takes a loop back at the link layer it does not quite go out through the network interface in this context someone earlier has asked this 127.0.1.1 I am answering that question also now itself at that time I was very confused because I have never seen this address before and I thought maybe it was there for some IPv6 backward compatibility issue but apparently I dug up a little bit more as to what this address is this address is very much specific to Ubuntu in other words you will not it is an operational specific address that has been created to handle some bug with GNOME application it has got no relevance other than the fact that just to ensure some compatibility with the GNOME that is used as part of Ubuntu they have to specify this IP address otherwise it has no relevance as far as concepts are concerned this question has come from remote center 1269 why does not BGP use link state or distance vector so BGP is a protocol that is going to interconnect different autonomous systems its goals are very different link state sorry BGP does use something called path vector which is a bit similar to distance vector but you specify the entire path I will not get into the details but at a high level the reason why BGP does not use link state and distance vector is link state and distance vector are more for finding a path efficient path between a source and a destination whereas the role of BGP is to find any path that satisfies certain policies the policies will be dictated by financial arrangements whether someone is a customer or someone is a provider or the kind of competition they have across the autonomous systems and so on so forth efficiency is the least thing in their mind when they are trying to do routing that is why BGP does not use link state or distance vector more details are available in the BGP video that has been made available as part of the concepts so we will move on to another question so this question was asked by remote center 1333 which is basically postal addresses are geographical addresses what about IP addresses so this is actually the same question that I have asked as part of a concept within the Bodhi tree but I think it is a important question so still I am going to answer it postal address as you see there is a geographical like if you specify like this country this state this city within the city this particular pin code so there is lot of geographical information that is captured as past of postal addresses whereas IP addresses there is not anything geographical about it for example you may assign one subnet mask or any IP address today in Bombay and tomorrow if the service provider decides to take that thing and assign to someone in Delhi that is also very much feasible so the routing protocols will figure out where that particular IP addresses through this exchange of messages and thereby direct traffic that said so that the conclusion is IP addresses are not geographical in scope but that said often they do not vary that much with time so if the provider is using certain IP addresses within Bombay they stay static for a relatively long period of time so there are lot of services that make use of this geographical information to serve so for example I think I was giving the speed net dot speed test dot net for you to check out the internet speed so when you do that it will actually figure out that pink to some server that is closer to your so if I example I execute it as part of my computer it will give me some Mumbai server for me to pink to and do this test now how did it figure out that it should give me a Mumbai server based on my IP address so it knows that from wherever I have sent information this it has a database that keeps track of this type of information and based on the database it will provide me a server to do my speed test based on location ok this question has come from center 1224 the question is IP protocol being connectionless how does it provide a connection oriented service to the TCP protocol now IP protocol I had mentioned is the best effort service there is no connection establishment for you to send packets you just send packets based on the destination address it will just forward the packets there is not any connection then how is it providing connection oriented service to TCP it is providing it is not providing any connection oriented service to TCP in fact TCP is the one that is connection oriented it is connection oriented because it is maintaining lot of state related to the connection you saw that CIN CINAC AC that exchange the TCP handshake is a way of exchanging information about the connection before you even start sending the data so TCP is a connection oriented protocol because between the two endpoints before you start sending the data you are doing some handshaking to exchange some state information whereas the same you are not doing at the IP level IP you just generate a packet and push it it will based on the destination it will forward the packet another question that was asked was what is the scope of the protocol such as R RARP RARP ICMP IGMP with the establishment of IPv6 networks so let me get into a little bit of detail there so RARP I have again not shared with you the IPv6 videos but RARP is redundant in fact it has no use in IPv6 it is because RARP has been replaced by another protocol called neighborhood discovery protocol NDP which is part of the IPv6 so there is no use of RARP by which I mean there is definitely use for the functionality of RARP in other words you still need to determine what the MAC address is corresponding to an IP address except that IPv6 is not using the RARP protocol but it is using another protocol called NDP to achieve the task so NDP does something very similar to R except that it is based on ICMP messages rather than the way R handles it RARP is an outdated protocol in fact it is not used anymore it has been superseded by the DHCP protocol so we will not get into that it has no context even in IPv6 the other protocol is ICMP was there in IPv4 it is also there in IPv6 except that a few additional ICMP type codes have been added to take care of some of the IPv6 features for example this NDP protocol I was mentioning needs certain type of ICMP code types so there have been new code types associated with the NDP protocol that said there is also the fragmentation IP fragmentation has been removed in IPv6 to ensure that the routers are not burdened with this functionality so the fragmentation is not there as part of IPv6 but then it is also the case that you may encounter links that have an MTU size smaller than the IP packets you still have to solve the problem the way it is solved in IPv6 is again through ICMP messages so they have defined a new ICMP type called packet to big based on this you handle the MTU problems so I do not want to get into too many details but this is at a high level what is happening as part of IPv6 the third fourth thing that was asked is what is the role of IGMP as part of IPv6 IGMP is a protocol that manages multicast it is again applicable in IPv4 networks it is again not used in IPv6 IPv6 has another protocol called multicast listening discovery or some such protocol I do not remember the name but that is the protocol that has replaced IGMP in IPv6 so this question has come from remote center 1007 so when the TCP IP configuration file has the information of subnet mask and default gateway to find whether the destination packet is belonging to the same or different subnet what is the need for host routing table in the end host when routing is really performed by the gateway router see I mean this is a bit of a confusing question if the question is if the routers have these forwarding tables and everything why should the forwarding table be present in the host if that is the question as I said you still need to determine whether this packet is within your subnet or outside your subnet and the way that is handled is through the routing table so when you do root minus n it gave you bunch of information those are the rules that the host uses in sending information out by the way a computer need not have just your e0 interface it can have multiple interfaces e0 interface 1 so on or it could have a wireless interface as well as e0 interface so when there are multiple interfaces as well as you do need to figure out whenever you get a packet whether you have to send it on this interface or that interface or whether you should send it on the local area network or to the next hop router so all these rules are managed by the routing within an end host an end host can be a source or a destination so sometimes it is a source when it initiates the connections sometimes it is a destination when others initiate the connection so no matter what you need this information at the end host so another maybe this is the last question I will handle is this question is again dealing with IPv6 is IPv6 more secure than IPv4 some say this one is more secure than the other some other say some other thing is more secure what is actually correct IPv4 as well as IPv6 rely on IPsec protocol that is a separate protocol in other words whether they should support it or not is what is important IPv4 the support for IPsec is optional whereas they have made it mandatory in IPv6 the fact that something security feature has been made mandatory in IPv6 means more people are going to start using that feature and with the hope that things will be more secure as such IPv4 or IPv6 by themselves they do not what is it called as far as the routing forwarding all those things are concerned there are nothing security about it it is more a question of whether they are integrating a security protocol rather mandating a use of security protocol or not so one could potentially say that IPv6 is more secure because it has made the use of IPsec mandatory so that is the question so this has come from center 1152 what is the maximum capacity of wifi that uses can be supported see it is a function of many factors so typically it is a function of how much capacity are you talking about A22.11 B or G or N or AAC whatever it is there are so many protocols that are out there typically beyond 20 30 users you will start to see problems but again it is an active area of research where they do want to increase the number of users so there is no straight forward answer typically beyond 20 30 when regular wifi that we see A22.11 G is where you will again depends upon what is it that they are doing I mean if they are passive but if they are doing lot of downloading yeah it may even support only 20 so it is a function of the traffic patterns the range number of users many other factors come into play. IPv6 implementation is getting delayed it is not getting people are using it so most routers most host these days do come with IPv6 it is just that the transition is not difficult because most of the you have to upgrade lot of even though it is just a software upgrade you have to upgrade lot of machines most of the core routers are already changed it is some of these edges that need this change so it is slowly picking up it takes time it is a I mean we have been using IPv4 for a significant amount of time and so many people have been using it so it takes time to change it is not easy to change ok I think we will end the session now