 I think we can start. So, we are looking at the SIP trapezoid and we are discussing the forward invite structure which was there. So, I will actually move ahead from there. It is like there is a one public address which never changed. So, to and from actually is for that, but the contact which is at that point of time when this invite request is being sent where the actually that person is. So, if you will actually notice in the contact field after SIP colon whatever is the user name at the rate then it is for Alice it is PC33.Atlanta.com because her soft phone is actually being given that particular DNS name at that point. So, that is the actual location of that entity is at that point of time, but actually from outside because she might keep on changing her IP addresses. This can happen dynamically she may plug in the phone at some other place might get a different name. So, this cannot be used as a universal ID and when she is telling for example, a visiting giving a visiting card to you she cannot start how will she will modify all the for all the visiting cards which is already been distributed. So, there has to be a universal naming which does not change. So, that universal naming is related to domain name and this contact name will also be there with what we call location server or register. So, whenever she will change this she will actually for your display whatever is your public URI say URI corresponding to that this will be the another URI. So, this will what will be registered with the location service. You do not know for example, about the Bob Alice does not know what is a Bob's current contact. So, that is the whole problem that is why invite has been sent which goes to SIP proxy SIP proxy sends to the proxy in the domain of where the Bob is there. That proxy then talks to the location server or register finds out for this particular public URI SIP URI of Bob what is the current contact and once it knows the current contact it actually it makes a invite request is sent to that contact URI machine and while returning back then the Bob will be simporting up his contact. So, both Bob and Alice will be knowing their actually current contacts and they can do direct peering on that basis. They can even do direct signaling after that if the signaling has to be routed through proxies it has to be mentioned explicitly when the invite request is sent. They can directly contact unless in the request setup invite request there are certain header fields which have been added. For example, in the forward invite first thing you are putting was via every SIP proxy was putting a via entry. So, by the time it reached to the Bob there were three via entries which was there in our case. Now, this via actually tells when the response has to be sent back this should not be sent back directly it has to be via this. So, whatever the top most via thing the response will be always sent to him if there was there were no wires the response would have been sent directly to the contact which was there in the invite structure in that request. So, that was explicitly done actually there. When the Bob will respond I am now going to come to that response structure because they are they are I think quite certain settle things which I was also not clear earlier. I realize that the way it has been structured is not that simple and then of course it is using its own kind of a layering structure for a specification it does not say how you are going to implement, but layering structure which has been identified also tells how the software will be implement. So, this also typically use what we call a four layer structure for implementation. So, I think today I will first of all go with the response. I think I have already finished all the fields which were there in the invite request nothing has been left. So, response thing we have to look at and then of course we will move over to that particular layering which is used inside the CIPA what you call entities. There can be many CIPA entities and then we have to actually understand I have been talking about the state full and state less proxies they are not actually there are four entities technically I was not explaining about state full proxy can be further split into multiple things. So, we have call state full we have transaction state full and we have what we call B to B user agent B to back to back user agents actually. So, that also can be there and they are very minor subtle differences, but each one of them actually will have a different capability all kind of elements can be there usually most of these things are also happening even in other designs which are proprietary not CIP based, but they take a different form. The same thing must be there with the CIPA same thing must be there even Google talk some of them they may not be implementing or functionalities have been shifted names must have been different, but architecturally yes this is a very generic structure and this has evolved over time earlier RFC in this RFC actually has some differences because of this. So, coming to that thing what so the response which will be there and I think this is the CIPA trapezoid which we are talking about. So, the invite was sent in this direction and each one of them added their own via headers. So, first one was added by this second one by this third one by this there are three via headers which were there. So, there is a thumb rule that most of the fields will actually be copied when the response will be generated most of the fields will be copied back into the response. So, this example currently I am given example later on I will give the specification for the request and response structure itself there is a formal specification being given. So, usually it will be look something like this. So, this first line in the response will always start with this thing the first thing will be CIP usually it is a character case insensitive, but machines are expected to always put capital letters the way it is done with STTP also. This is a literal string it is not a number while in STTP case it is counted as a number, but that does not matter as far as the implementation goes, but conceptually that is a difference they actually have kept lot of things borrowed lot of things from STTP in this case. Now, there will be always a space one space there cannot be two spaces there is has to be exactly one space character. So, a space character cannot be used inside the strings that is very important here if it has to be it has to be escaped escaping I think all of you do understand or not all of you must have used latech at some point of time for your document processing system. So, latech has a very nice character this one this is a control character you want to type this character in the latech how you will do that is there a way to type this character how that will be done. Dollar is for some mathematical is servicing if I want to write equation. So, this will go in mathematics for that purpose suppose I want to put this string itself should be visible in the text how you will do that you are writing a book on latech where you want to explain how to write a math thing. So, you have to put this as a character, but the moment you put it it will write a math equation a is equal to b plus c it will write this it will not write this thing how you will get this dollars we have to use a escaping sequence. So, there is a special character which has been defined which is this if I put this character just before this the special meaning of this is lost this also has a special meaning. So, I can also put this. So, these are now literal strings. So, these two combined together when they will be passed will be now you will see something like this is what is escaping, but the problem is when this character itself has to be shown then I put and their backslash it removes a special meaning which is attached with this new line no this is not a new line in case of latech. This is a new line these are basically you are removing what we call you are escaping the earlier character otherwise you cannot print this it is not you check it is a escaping character it is not possible it is been used for that purpose. Well a very simple thing like you have math mode you put like something like this begin begin is typically slash begin math I think something like yeah and then. So, all these are a special characters they always start with this that is why it is a special thing, but this itself can be escaped by putting just one backslash before this that new line I think which you have to certain places actually it is being used I will tell you where especially if you want to write out what we call the text based configuration file in unix. So, this single backslash is also used as a what we call it is only breaking in a physical system or while you are doing c programming, but actually it is considered as a one single line. So, one single large line can be broken and when written into a dot txt file it is being written as whatever you are writing slash whatever is slash whatever is slash now when the machine is going to parse it. So, this is a b c d it will actually read it as a b c d new line like this. So, sometimes you require for example, when you are implementing print types and other thing and lines become too long for the messages then usually you do it that is again a common use again that is a special character there in this case, but that is within a string. So, when you are doing a print f and you have to print this particular thing then there is again a problem. So, you use a print f command and you put this then there is a problem actually. So, when you want to print this itself you have to again do escaping. So, escaping is a pretty good notion in fact HDLC when I was teaching I have talked about this escaping. So, what was that escaping thing which I thought they should not be continuous because 0 6 1s and 0 is the start header 0 6 1s and 0 should not or 6 continuous 1s should not happen inside this string. So, I implemented a bit stuffing. So, that is a escaping actually rule after every 5 1s I insert a 0. So, even if there are only 5 1s in actual data n is 0 still I am adding a 0. So, that why on the receiving side I can simply remove it same rule also applies here. So, certain characters control characters cannot be transmitted in the strings which you are doing they have to be escaped otherwise you cannot interpret. This infect also happens even your STTP transport or in XML schemas where certain characters actually have a special meaning. I think another character which you remember is this XML schema. So, I can put a tag I can close a tag now I want to put this itself actually inside as an argument then what I how I will do it. There is some field and this is only the literal thing this should not be interpreted by XML parser. Similarly, there is a character called M percent, but when you use an STTP you always write this thing as something else which comes here I think something like this is there I have forgotten that. So, we use A M P semicolon and something else here there is some initial command initial character this 4 characters 5 characters actually represent one single character. Sometimes in the URL which you have been actually using you must be using percentage 20 F or something you must be seeing in the URL that actually is a single character, but that is URL encoded. So, URL encoding is also there is an RFC on that. So, all control characters which have a special meaning are converted to something else and the reverse side again reverse conversion takes place and that is how in your file names you can still use a space in unix otherwise whenever you press you put a file name that is a separation between two arguments, but file name can actually have a space. So, I give you a file which contains a b c there is a space there x y z when I will do l s usually you will see a b c x y z you will tend to see these are single two files these are not two files, but now you want to do a v i editor you do a b c space x y z you cannot edit the file because the moment you see space v i will assume there are two arguments it is not one argument. So, whenever you have to do a v i editor you have to use for editing you have to put a backslash and a space and then it will be taken as a string. So, that control functionality of the space has been now about it the whole thing is taken as a string by v i editor. So, this is I think in computing is pretty common same thing will be required here well I just wanted you to appreciate what the escaping is well there are lot of ways everybody does it all the time it is being done unknowingly or knowingly. So, the first field will be this and then of course as I told that three guys have already added the v i headers. So, I am actually putting all the three of them. So, again this header must be having a description it is as per that format it says the one to whom you are going to send back the response is a C 2.0 compliant proxy it is going to use a UDP transport that is what has to be used when communicating back and the guy who has inserted this or where you have to send back your response first is this. So, you remember that this one was a CIP server of block C dot com. So, what has been informed to this guy is when you send the response back send it to this person and it actually will remove this particular v i field when the response will be moved further. 200 and 200 is for the machine this is interpreted as a basically the first field will always give version number is a fixed format one single space this is what will be fed to the machine or the automata which is implemented there as a software or a program will be understanding this particular thing and based on that finite state machine will change the state. This is for the humans machine will not interpret what is written here you can even write in Hindi if you wish that is permitted you can actually write that is also permitted remember I have escaped the spaces and you have to actually set a header field in this case which is a I think except language colon h n that is possible. So, a machine is not going to read it. So, does not matter for this is a UTF 8 remember all encoding is UTF 8. So, any language of the world almost all languages actually have UTF 8 encodings can be used for transactions. So, it so far I think I have not seen anything in except in certain countries where English is not being used commonly they actually do the encoding in their languages, but in India we jump somehow I have been following only English, but in the variants might actually be existing, but I think SIP server India nobody manufactures we mostly built on whatever is on the open source some small small companies, but they are not focused on the English in the aspect actually. So, most of the engineers who are going to manage they already know English maybe after 10th class they have stopped reading Hindi after everything is in English actually, but that is technically possible the provision has been made. Basically it is mostly because of China, Japan, Russia and then of course, French, Spanish countries, language people which are there English is not everywhere English is not a very prominent language by the way, but somehow because US build most of things have been done first English is there, but because it has to be also become popular all across the English and French you will always find that everything will have two variants although I think Hindi is the third most speaking biggest speaking language largest number Chinese first I think then French or something or French is I think very big lot French and English Hindi comes I think four fifth something somebody was showing me the list, but we still do not have implementations in that, but we do now permit your URLs for example, the when you are going to browse you can type in your URL of your browser in Hindi that is technically possible Firefox permits that in UTF 8 and that will be resolved by DNS and you can actually go to a site. So, I have not checked may be Google might be actually providing a domain name in Hindi for Google. So, you can try that out if you wish you have to check with them, but multilingual domain names are now feasible because everything has to be in UTF 8 all standards have been but this is also is in UTF 8 because of this it is not ASCII character set only thing this particular thing has been specified this particular thing has been specified this can be in Hindi does not matter it is a UTF 8 string only key words now has to be in English because they have been specified freeze that you cannot touch for computer language computer does not understand language for emits a string is a byte code. So, this particular byte sequence means this you are building up FSM based on that. So, in fact lot of when you are actually going to build up a machine you write a software you do not remember these whole characters usually need not you can convert this character to only whatever is required to identify a state variable that is it. So, this will have typically a semicolon now remember if it is semicolon it is not a separate value this is the header field this is the value values will always be separated by comma if they are multiple values which are existing for a header field semicolon is nothing but is for this particular value itself there is another attribute which is coming in. So, this semicolon and this branch will be some random sequence I actually have mentioned the same thing earlier also and this gives the IP address of where it has to go back second where field will be there. So, I think I can skip you can just copy whatever was written last time I have not even written a full string actually here. So, this will be now this one because this must have added it first this will say big box 3 dot Atlanta dot com semicolon here also is a semicolon remember I have even if I am actually writing it in a different line they all have to be in the same line they all have to be in the same line there is no CRLF in fact I should write another character called this is carriage return and line feed carriage return is whatever is your printer technically you are printing one by one the character you are here. So, carriage return is you are moving back to the 0 column and line feed is you are moving to the next line. So, CRLF technically you have to carriage return is one and LF is another one two characters actually. So, different machines handle it in final system this is actually done in a different way where it is a end of line technically EOL we call it. So, this has to be there. So, in this case the end of line is not here end of line happens here. So, I should explicitly mention that this actually is word for key word, but I am using it for CRLF carriage return line feed. So, CRLF I am representing it by this. So, it will also have a some branch number which is assigned by that particular machine similarly there will be third wire which is added by the sender this one single space is not these are not two spaces exactly one space that is a specification. The last one will say PC 33 at lenta.com it will also have a branch some random string received and then of course comes the remaining field. So, two field will be copied directly as this two field was what was it actually earlier it was Bob two field which was there first letter is always capital then all is small unless the word actually changes. Sir, this received IP means the next I have by. Is the IP of that particular server 10.blogs.com I think that is what it means it is so far I could not find out a spec, but my guess is it should be that there is no other purpose for this. So, this branch parameter identify the transaction between two people is a random string. It must be for identification of for transaction. This is between the proxy and the Bob in the client for Bob. This particular one between the proxy second proxy and the client this is between the two proxies this is between the first client and the proxy. So, this is basically it for identification because you might be issuing multiple things for example, multiple invites. So, when the response comes back you have to figure out it is for which one. So, far session has not been in fact there are many parameters which can be matched together, but what happens you need not go to the bottom thing and then actually match all the entries there you can just match the first thing here itself. If this thing matches then only you go down further. I think then my interpretation has to change because I could not locate any interpretation in the RFC. So, far is a huge document anyway I have only done it partially yeah there was no received I think this is then this must be the IP address of the machine which must have received who is responding back must be for that. So, that guy can figure out whom actually he has sent and then match with that as well as the branch now whatever is the random string. I think that must be the logic it does not bother there is a packet or circuit. It is a message transfer between at the application layer. It does not know about the path there is a UDP connection. How the UDP packet is been commuted through the actual physical network is the headache of IP layer. My guess is that when the response is going back we have not to consult a PRS server and all this thing that why they are using it. This should be as a proxy number. Again when they are sending back the response they will not have to consult a location server and DNS server again again. You need not to anyway have the DNS anyway DNS we do not bother we do not call it a SIP server or something. It could be the default gateway sir and in case it takes a shorter connections because the from the proxy to. We actually leave it a question mark and we can study SIP proxy and we will find out then we will discuss that. So, we are not clear and we cannot figure out what could be the meaning interpretation. So, leave a question mark and let us investigate that is a basis strategy. So, this I think I will whenever I will find out I will tell because I do not know how much I will be able to go through the proxy and where it is given. So, let us whatever concept we can pick up let us pick up those. In any way if you end up in implementing the software you anyway have to find it out. So, you have to read the full RFC and you will find it out. What is the meaning of this? I have not so far reached to the specification of wire structure. So, two field again will contain here the only difference is rest everything is remain same it is a bob angle brackets within which your SIP URI actually will be there. SIP URI also required all string has to be escape destring angle brackets cannot be used inside the SIP URI that is very important. You have to use all strings which are escaped strings whenever the URI has to be communicated and you cannot use angle brackets in your email. So, you for it is I think same way for example, I cannot have a something like this this email is not permitted because there is angle brackets because these are usually used to enclose the email ID itself. Even angle brackets are used for a special purpose in programming that is for actually templates. So, that is a new concept which came later on C earlier see it was not there, but current NCC actually specifies these templates which is a pretty powerful tool. So, I write the same code and I can generate a code for depending on whatever is my requirement for different things different piece of code. So, whatever was the SIP URI that SIP colon bob at the rate block C dot com and then you will have a tag. Now, this is something which is newly added and this forms an important part. So, remember two tags one which is one is in two one is in from and one is what we call call ID these three thing put together specifies a dialogue it is not a transaction when I send a invite and comes back. In fact, any response which is non one x x will complete the transaction is known as final response only one x x is a provisional response that is a non final response. So, transaction is over, but you might be doing other transactions ultimately you have to have a buy for example, as a transaction. So, all transactions which corresponds to same dialogue should actually have the same tag values in two tag value in from and the call ID has to be same that is how the association to the same call dialogue actually happens because the one guy might be making a multiple calls. So, when a message come it has to be associated to a call. So, this triplet is the core here to identification for the identification of calls. So, this tag value sub will be some random string from will be copied as it is whatever was there in the Alice when the things were actually sent I think I had Alice say colon Alice at the rate Atlanta dot com. So, what was sent by in the invite this tag will also be exactly copied from the what has been received in the invite. So, even if two different invites come and this guy by chance sent the same tag the call dialogue will be different this and the call ID these three uniquely identifies a call dialogue. This will be said call dialogue will be up till the time the whole call is over when the buy comes actually or a rare happens. Till the time they set up directly clear to be. No, even after that the dialogue will be maintained. Dialogue will be maintained till the time they terminate the. See, they may not root the signaling message through this thing proxies. See, once the call has been set up they can directly do signaling also then also call dialogue has to be specified. Termination signaling can be done after the initial set of unless report root has also been configured by this proxies. If at any point of time when the invite was sent one of the proxies is record root and puts his own address there then that will be maintained at both with the bobb will maintain it because he receives the invite. The same field will be copied back in the response Alice will also receive it. So, they both now have to do signaling only through that proxy because that is a record root for this particular call dialogue has been maintained mentioned in the beginning. Then the buy when it buy has to be sent for call termination has to go through that proxy. In current case the example which I am taking record root has not been inserted while forwarding the invite. So, buy will be happening peer to peer it will not be through proxy. If wire would not have been put even the responses could have been avoided and could have been sent to only the last wire which is this one. So, invite goes this way the ok comes in this fashion. Only problem in that case is if it is a call state full proxy it will not know the status whether the call is through or not through. Usually if it is a call state full proxy this wire address have to be put by call state full proxies and not transaction is state full proxies. Transaction is state full proxy is a different thing transaction happens only between a client and a proxy. So, transaction is happening between these then a transaction is happening between these and this is a transaction user running here I will come to this particular structure actually and when the response comes back they keep on sending the response back. If it is a state less proxy this will not remember anything this whatever comes is simply forward it does not remember what it has forwarded when something comes back it sends it back that is it it does only proxy. So, I will come to actually that particular figure which is required to identify this thing. Then you will have call ID this is going to be same which was there in the earlier communication the invite remember this is a response there is no method being specified there because of this. Then c sequence this will also be copied from the invite. So, there was a method which came there was a corresponding sequence number this response as a result of when that method was executed. So, the sender will be able to figure out the response corresponds to which particular command when it will send a next command again the number will change. So, some command gets missed out it can figure out that I have not received the response to this particular command I have got for one I have got I have not able I am not able to get a response for two but got a response for three. So, it can figure out what particular commands have not been executed, but all final responses for all commands should arrive back. So, this sequence number actually helps in doing that actually. And then of course, this is contact which was not there earlier this is now what will be added. This will be telling that this Bob this will not be Bob sip colon Bob at the rate at Biloxi.com this will be where is actually current as of now is staying current location this where the peering will be done. And interestingly sip is not the only URI for telephony there is a TEL URI which is also used by a lot of people. So, sip also can be used to carry not only sip, but tell URI also, but then how those will interpreted is a different question. So, in this case 0.2.4 now I think from here yeah now I can get what has happened is this IP address has to be of the proxy from here I can guess this is not the one who is giving the answer back this for the proxy. So, it is only telling that when I received your the packet I received from this particular IP address when it is sending the response back and it is responding back to whatever IP address which will be resolved from here. So, it is technically possible that there is another machine which is running here. So, invite comes in this this invite was received from here and this has put a via entry for this particular one another machine setting the same domain. So, it will send the entry here response will be sent here a different machine because when the via entry was done this server 10 there is server 1, server 2, server 3, server 9, server 10. So, invite was received from this IP address was response has to go back to this that is what actually it means and the same thing is being copied back this is a copied back a stuff remember only this thing was added depending on from where you receive the invite request I think that is what the interpretation should be there cannot be anything else now. Again my interpretation is that only to avoid the lookup they are adding the IP address because if that has to be done then even this is not required you just put the via field. It should be there because if you remove this server proxy again you do not giving IP address. So, what path you have to do again you have to lookup on the you will lookup you will lookup, but you avoid time lookup you can put the IP address the only reason I can figure out. But then in that case why this need to be added back question is this this guy was sending the response back this person already knows from which IP address I got it this IP address is of no use to this guy no this guy will send to this proxy and that will remove this because this is. But why this need to be added only for Bob Bob is already when it got the invite that time you know what is the IP address when you are sending this messages for this guy is a response. So, this is only for verification purpose that in this domain I am sending the message back to you, but the response which I am sending was received to me invite was received from this route. So, I received it from here and this is where it is going to be sent back. So, you are sending a information and you are telling him that this is this particular thing was inserted when the invite was there by this proxy I think this is for this this is a very settle thing again. So, these two things can be different if indeed it is going to send this thing back to him then both of them will be same you are right then both of them this also DNS should resolve the same IP address, but I think the clue here is I think RFC specifically again even how the naming is done is also discussed server 10 probably must have been done intentionally why not only server dot block C dot com in the text. Server 1, server 2, server 3, server 10 it actually telling their multiple servers and when proxy is sending this must be this IP address IP address they have just put it actually 192, 0.2, 0.1, 0.2, 0.3, 0.4 that is what must have been done in the RFC even these namings are also so that people can understand they should not misunderstand this stuff they can make out lot of things through this mechanism I think this must be the reason. So, this is the fourth IP address which now even clarifies that this is the contact now PC33.Atlanta.com corresponds to 192.02.1 which is this particular client where Alice is there and then of course, I think rest is all state forward contact type dot 4 is for Bob. So, this Alice contact is not being copied here Alice contact came from that side Alice's contact come from the different side remember. Sir this 2 dot 4 is for Bob. It is for Bob is a contact of the guy who is sending the response that was the contact of the person who send the request this 2 and from field is not for the response because the response is not going back to the Bob and it is not from Alice. So, this that can also be one of the confusion this talks about the invite message this is corresponding to the invite which was sent from Alice to Bob and this response is originating from this contact. So, contact is the one who is from where the things are originating 200 is also specific that it is a response to that yes because remember these tag values and call ID 3 things become the call dialogue and for the call dialogue 2 and from is what is important this 2 and from is not for the response or the invite is who started the dialogue call dialogue is only one invite is one of the transactions which is happening inside a dialogue and this transaction will get completed when this ok will go back final response which one call ID exactly same this will be same number at the rate PC 33 dot Atlanta dot com. So, number which was there actually written last time it was it must have been I think this A 8 4 B something PC 33 Atlanta dot com. So, contact type in this case content type not contact is a content type content type this is a mime type specification again. So, this is again a session description. So, this basically what kind of call is going to be set up all parameters which are now being accepted by the Bob. So, Alice might have told I want a video call to be made and video will be with this codec audio will be with this codec or this particular options are there and now set up the call this guy might revert back I do not have a video. So, this SDP says no video only audio is going to be there. So, subset of that will be accepted and sent content type content length these are all standard thing. So, number of octets octets or bytes which are there and then of course, remember after each one of them CRLF is there that is extremely important after this whatever is the character. So, may be say 131 I have written here some number another CRLF even if you do not have any payload any content attached even then this CRLF has to be there even if it is nil if you are going to put content length is equal to 0 then also this carriage return line feed has to be there. So, if you are actually creating through a VI editor you are trying to build up a header file for a programming application never forget this because other side will not accept it in that case. You can try this thing if you wish for HTTP that is taking even for this I think it should be possible do a telnet and do a telnet to port number 80 of a web server do not do SSS. So, telnet and do not give a user your name need not be given. So, telnet to a machine is space 80 you can even specify the port where the telnet has to be done by default I think it is 23 by default I think it is 23 telnet is 23 FTP is 21. So, most of the people actually do not know that they can change the port. So, they do a telnet space and the machine where you want to do a login, but telnet is not a secure protocol it is a clear text transport actually which is used and then you can specify a port number 80. So, you do a telnet to a proxy 80 CP connection will be set up and suddenly there is it will not ask for login password because there is no challenge in that is not a telnet server running on the other side there is no telnet D-Demon on 80 port it is a web server mostly Apache or may be something else, but then you will see a line then you will write get whatever is the first command you just type it out nothing will happen once you press one enter you have to write down all the header fields and when the center is made then only the header will be interpreted by the machine on the other end because what is happening is technically for HTTP I am creating a byte pipe which is a TCP connection between two machines as you are pressing characters these characters will just be there is a algorithm which is used to keep on waiting for certain number of characters then it will be put in the frame will be transported this will keep on receiving the character, but will not start interpreting till it finds out two CRLFs together when it figures out their two CRLF fields together header is finished now let me parse it and after that once after the parsing will figure out how many characters it is supposed to receive after this then it will keep on receiving those many bytes then the HTTP request is all over because mostly HTTP is now using persistent connection. So, same TCP connection now we can be used for another HTTP request earlier days for every HTTP request separate TCP connection response comes back TCP connection closed next one again you do the same thing. So, persistency was implemented later on actually so it becomes pretty fast you only have to do it once TCP connection. So, that overhead was actually removed. So, same thing is concept is also used here is the length of the content which will start from this line on word if it is 0 there is nothing after this is the end there is no end of file in your Linux systems. So, mostly it is based on Linux systems so there is no end of file character your Microsoft I think earlier file systems were actually using an end of file character at the end of the file here purely it is based on how many bytes have to read from the beginning it will read those many bytes file is over so structurally it is same actually. So, this is what will be typically the response let me quickly close through the complete transaction. So, for example, now what can happen is this guy is sending. So, first thing there was 100 which was coming trying this also will receive 100. So, when the invite was sent this can actually send something like 486 also I am just giving an example it is busy here this is one of the codes I will specify which part of a 1 x axis for what 2 x axis for what 3 x axis for what. Now, this 486 is not received by this person this is sent by Bob because Bob may be talking to somebody in that case this proxy can actually decide that I can now try making a call to a voice mailbox. So, this will typically use for those kind of applications if you want to change the parameters of the session in between you will again send another invite, but now your sequence your tags and call ID still will be maintained same. So, that invite is a reinvite because it is not a fresh value that fresh value states are being maintained by these two entities. In fresh invite in this new reinvite basically it can send the new parameters new SDP if it is acceptable you will get 200 back and this new invite need not be sent via proxies this can be peer to peer that is important unless that record root thing is being configured in the beginning and then of course it can send 488 which is not acceptable that is what is the meaning. So, remember these strings are application is specific these are not hard this can be rewritten by you machines will understand only these codes this is only an interpretation of that for the humans. So, you can write it in Hindi it is ok. So, these are not synced sacrosync these are sacrosync numbers. So, if this comes the call will remain with the older whatever agreement which they had actually this typically happens if the bandwidth of this channel for example, improves there is a bandwidth estimation bandwidth becomes better you can say go for a better code or better quality video for example, you can again agree, but the other guy does not have the capability or bandwidth goes down then you can downgrade yourself. So, you can keep on negotiating on that basis, but remember media transport is separate than the signaling ok. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . can override if they wish, but they are not supposed to be as per the standard. It is only for signaling path. It is only for signaling path, not for media. If you want a media proxying or media gate wing in between, you will not actually, you will first of all what we call back to back, you will create two trapezoid in that case. That is a typically the structure. This is your media gate wing. So, signaling happens in this fashion. That could be one option and then media goes in this fashion. There is another way of signaling. This guy wants to go through the media gateway or maybe there. So, it will actually have a media gateway to do the signaling to this guy. Then it will do a signaling to this fellow. It is now doing a tricky thing. It is now telling him that this is the end user and making him peer to with him. For on his behalf, now this is a media gateway control now. This is this mega core. Even this can be used, not an issue. For him actually now it is peering and then there is a bob and bob will start peering with this. So, one signaling path is this. Other one is between these entities. That is another way of doing it. This is what we call back to back user agents, B2B UA. So, you have a user agent server here, user agent client here sitting and they are back to back funnel together and you can also build up tricks. For example, for signaling you can have B2B UA, but you might do media transport directly that is also possible.