Internet protocol suite: Difference between revisions

Content deleted Content added
restore diagram per RFC conventions. this is not about webbrowsers
Reverted 1 edit by 115.78.95.116 (talk): Why unlink application layer?
 
(23 intermediate revisions by 13 users not shown)
Line 6:
{{IPstack}}
 
The '''Internet protocol suite''', commonly known as '''TCP/IP''', is a framework for organizing the [[communication protocol]]s used in the [[Internet]] and similar [[computer network]]s according to functional criteria. The foundational protocols in the suite are the [[Transmission Control Protocol]] (TCP), the [[User Datagram Protocol]] (UDP), and the [[Internet Protocol]] (IP). Early versions of this networking model were known as the '''Department of Defense''' ('''DoD''') '''modelInternet Architecture Model''' because the research and development were funded by the [[UnitedDefense StatesAdvanced DepartmentResearch ofProjects DefenseAgency]] through(DARPA) of the [[DARPAUnited States Department of Defense]].
 
The Internet protocol suite provides [[End-to-end principle|end-to-end data communication]] specifying how data should be packetized, addressed, transmitted, [[routed]], and received. This functionality is organized into four [[abstraction layer]]s, which classify all related protocols according to each protocol's scope of networking.{{Ref RFC|1122}}{{Ref RFC|1123}} An implementation of the layers for a particular application forms a [[protocol stack]]. From lowest to highest, the layers are the [[link layer]], containing communication methods for data that remains within a single network segment (link); the [[internet layer]], providing [[internetworking]] between independent networks; the [[transport layer]], handling host-to-host communication; and the [[application layer]], providing process-to-process data exchange for applications.
Line 23:
By the summer of 1973, Kahn and Cerf had worked out a fundamental reformulation, in which the differences between local network protocols were hidden by using a common [[internetwork protocol]], and, instead of the network being responsible for reliability, as in the existing ARPANET protocols, this function was delegated to the hosts. Cerf credits [[Louis Pouzin]] and [[Hubert Zimmermann]], designers of the [[CYCLADES]] network, with important influences on this design.<ref name="YSZAX">{{Cite journal|last1=Cerf|first1=V.|last2=Kahn|first2=R.|date=1974|title=A Protocol for Packet Network Intercommunication|url=https://www.cs.princeton.edu/courses/archive/fall06/cos561/papers/cerf74.pdf|journal=IEEE Transactions on Communications|volume=22|issue=5|pages=637–648|doi=10.1109/TCOM.1974.1092259|issn=1558-0857|quote=The authors wish to thank a number of colleagues for helpful comments during early discussions of international network protocols, especially R. Metcalfe, R. Scantlebury, D. Walden, and H. Zimmerman; D. Davies and L. Pouzin who constructively commented on the fragmentation and accounting issues; and S. Crocker who commented on the creation and destruction of associations.|access-date=October 18, 2015|archive-date=October 10, 2022|archive-url=https://ghostarchive.org/archive/20221010/https://www.cs.princeton.edu/courses/archive/fall06/cos561/papers/cerf74.pdf|url-status=live}}</ref><ref name="MevuR">{{cite news|date=13 December 2013|title=The internet's fifth man|work=Economist|url=https://www.economist.com/news/technology-quarterly/21590765-louis-pouzin-helped-create-internet-now-he-campaigning-ensure-its|access-date=11 September 2017|quote=In the early 1970s Mr Pouzin created an innovative data network that linked locations in France, Italy and Britain. Its simplicity and efficiency pointed the way to a network that could connect not just dozens of machines, but millions of them. It captured the imagination of Dr Cerf and Dr Kahn, who included aspects of its design in the protocols that now power the internet.|archive-date=April 19, 2020|archive-url=https://web.archive.org/web/20200419230318/https://www.economist.com/news/technology-quarterly/21590765-louis-pouzin-helped-create-internet-now-he-campaigning-ensure-its|url-status=live}}</ref> The new protocol was implemented as the [[Transmission Control Program]] in 1974 by Cerf, [[Yogen Dalal]] and Carl Sunshine.{{Ref RFC|675}}
 
Initially, the Transmission Control Program, (the [[Internetprecursor Protocol]]to didthe notlater thenprotocol exist as a separate protocol)suite, provided only a [[reliable byte stream]] service to its users, not [[datagram]]s.<ref name="TCP2">{{Cite web|url=https://www.rfc-editor.org/ien/ien5.pdf|title=Specification of Internet Transmission Control Protocol TCP (Version 2)|first=Vinton|last=Cerf|author-link=Vint Cerf|date=March 1977|access-date=2022-08-04|archive-date=May 25, 2022|archive-url=https://web.archive.org/web/20220525061950/https://www.rfc-editor.org/ien/ien5.pdf|url-status=live}}</ref> Several versions were developed throughby communication via the [[Internet Experiment Note]] series.<ref name=":30" /> As experience with the protocol grew, collaborators recommended division of functionality into layers of distinct protocols, allowing usersproviding direct access to datagram service. Advocates included [[Bob Metcalfe]] and Yogen Dalal at Xerox PARC;<ref name="BpyJd">{{cite book |last1=Panzaris |first1=Georgios |url=https://books.google.com/books?id=9yMhAQAAIAAJ |title=Machines and romances: the technical and narrative construction of networked computing as a general-purpose platform, 1960–1995 |date=2008 |publisher=[[Stanford University]] |page=128 |access-date=September 5, 2019 |archive-url=https://web.archive.org/web/20230117175134/https://books.google.com/books?id=9yMhAQAAIAAJ |archive-date=January 17, 2023 |url-status=live}}</ref><ref name="2J9cz">{{cite book |last1=Pelkey |first1=James L. |url=https://historyofcomputercommunications.info/ |title=Entrepreneurial Capitalism and Innovation: A History of Computer Communications, 1968–1988 |date=2007 |chapter=Yogen Dalal |access-date=8 October 2020 |chapter-url=https://historyofcomputercommunications.info/interviews/yogen-dalal/ |archive-url=https://web.archive.org/web/20221008232443/https://historyofcomputercommunications.info/ |archive-date=October 8, 2022 |url-status=live}}</ref> [[Danny Cohen (computer scientist)|Danny Cohen]], who needed it for his [[packet voice]] work; and [[Jonathan Postel]] of the University of Southern California's [[Information Sciences Institute]], who edited the [[Request for Comments]] (RFCs), the technical and strategic document series that has both documented and catalyzed Internet development.<ref name="i1TtW">Internet Hall of Fame</ref> Postel stated, "We are screwing up in our design of Internet protocols by violating the principle of layering."<ref name="xgruR">{{citation|url=https://www.rfc-editor.org/ien/ien2.txt|first=Jon|last=Postel|author-link=Jon Postel|title=2.3.3.2 Comments on Internet Protocol and TCP|id=IEN 2|date=15 August 1977|access-date=June 11, 2016|archive-date=May 16, 2019|archive-url=https://web.archive.org/web/20190516055704/http://www.rfc-editor.org/ien/ien2.txt|url-status=live}}</ref> Encapsulation of different mechanisms was intended to create an environment where the upper layers could access only what was needed from the lower layers. A monolithic design would be inflexible and lead to scalability issues. In [[IPv4|version 4]], written in 1978, Postel split the Transmission Control Program into two distinct protocols, the [[Internet Protocol]] as a connectionless layer and the [[Transmission Control Protocol]] as a reliable [[connection-oriented service]].<ref>Abbate, ''Inventing the Internet'', 129–30.</ref><ref>{{cite journal |author=Vinton G. Cerf |date=October 1980 |title=Protocols for Interconnected Packet Networks |journal=ACM SIGCOMM Computer Communication Review |volume=10 |issue=4 |pages=10–11 |authorlink=Vint Cerf}}</ref><ref>{{Cite thesis |last=Russell |first=Andrew L. |title="Industrial Legislatures": Consensus Standardization in the Second and Third Industrial Revolutions |date=2007 |degree=PhD |publisher=Johns Hopkins University |url=https://jscholarship.library.jhu.edu/bitstream/handle/1774.2/32576/alr-diss-08012007-CBO-opt.pdf |access-date=December 28, 2022 |archive-date=December 28, 2022 |archive-url=https://web.archive.org/web/20221228000055/https://jscholarship.library.jhu.edu/bitstream/handle/1774.2/32576/alr-diss-08012007-CBO-opt.pdf |url-status=live }}</ref><ref group ="nb">For records of discussions leading up to the TCP/IP split, see the series of [[Internet Experiment Notes]] at [https://www.rfc-editor.org/ien/ien-index.html the Internet Experiment Notes Index].</ref>
 
The design of the network included the recognition that it should provide only the functions of efficiently transmitting and routing traffic between end nodes and that all other intelligence should be located at the edge of the network, in the end nodes. This [[end-to-end principle]] was pioneered by Louis Pouzin in the CYCLADES network,<ref name="Bennett2009">{{cite web |last1=Bennett |first1=Richard |date=September 2009 |title=Designed for Change: End-to-End Arguments, Internet Innovation, and the Net Neutrality Debate |url=https://www.itif.org/files/2009-designed-for-change.pdf |access-date=11 September 2017 |publisher=Information Technology and Innovation Foundation |pages=7, 11}}</ref> based on the ideas of [[Donald Davies]].<ref name="Pelkey2">{{cite book |last=Pelkey |first=James |url=https://www.historyofcomputercommunications.info/section/8.3/cyclades-network-and-louis-pouzin-1971-1972/ |title=Entrepreneurial Capitalism and Innovation: A History of Computer Communications 1968-1988 |chapter=8.3 CYCLADES Network and Louis Pouzin 1971-1972 |quote=The inspiration for datagrams had two sources. One was Donald Davies’ studies. He had done some simulation of datagram networks, although he had not built any, and it looked technically viable. The second inspiration was I like things simple. I didn’t see any real technical motivation to overlay two levels of end-to-end protocols. I thought one was enough. |access-date=2021-11-21 |archive-url=https://web.archive.org/web/20210617093154/https://www.historyofcomputercommunications.info/section/8.3/cyclades-network-and-louis-pouzin-1971-1972/ |archive-date=2021-06-17 |url-status=dead}}</ref><ref name=":5">{{cite conference |last1=Davies |first1=Donald |last2=Bartlett |first2=Keith |last3=Scantlebury |first3=Roger |last4=Wilkinson |first4=Peter |date=October 1967 |title=A Digital Communication Network for Computers Giving Rapid Response at remote Terminals |url=https://people.mpi-sws.org/~gummadi/teaching/sp07/sys_seminar/how_did_erope_blow_this_vision.pdf |conference=ACM Symposium on Operating Systems Principles |archive-url=https://ghostarchive.org/archive/20221010/https://people.mpi-sws.org/~gummadi/teaching/sp07/sys_seminar/how_did_erope_blow_this_vision.pdf |archive-date=2022-10-10 |access-date=2020-09-15 |url-status=live |quote=all users of the network will provide themselves with some kind of error control}}</ref> Using this design, it became possible to connect other networks to the ARPANET that used the same principle, irrespective of other local characteristics, thereby solving Kahn's initial internetworking problem. A popular expression is that TCP/IP, the eventual product of Cerf and Kahn's work, can run over "two tin cans and a string."<ref>{{citationCite web needed|reasontitle=IInternet canProtocol onlySuite find possibly circular references for this phrase|url=https://www.networxsecurity.org/members-area/glossary/i/internet-protocol-suite.html#:~:text=One%20popular%20expression%20is%20that,was%20created%20and%20successfully%20tested.) |access-date=November2025-07-13 2017|website=www.networxsecurity.org}}</ref> Years later, as a [[April Fools' Day|joke]] in 1999, the [[IP over Avian Carriers]] formal protocol specification was created{{Ref RFC|1149}} and successfully tested two years later. 10 years later still, it was adapted for IPv6.{{Ref RFC|6214}}
 
DARPA contracted with [[BBN Technologies]], [[Stanford University]], and the [[University College London]] to develop operational versions of the protocol on several hardware platforms.<ref name="IjTdeF">{{cite web |author1=by Vinton Cerf, as told to Bernard Aboba |date=1993 |title=How the Internet Came to Be |url=http://elk.informatik.hs-augsburg.de/tmp/cdrom-oss/CerfHowInternetCame2B.html |url-status=dead |archive-url=https://web.archive.org/web/20170926042220/http://elk.informatik.hs-augsburg.de/tmp/cdrom-oss/CerfHowInternetCame2B.html |archive-date=26 September 2017 |access-date=25 September 2017 |quote=We began doing concurrent implementations at Stanford, BBN, and University College London. So effort at developing the Internet protocols was international from the beginning.}}</ref> During development of the protocol the version number of the packet routing layer progressed from version 1 to version 4, the latter of which was installed in the ARPANET in 1983. It became known as ''[[Internet Protocol version 4]]'' (IPv4) as the protocol that is still in use in the Internet, alongside its current successor, [[Internet Protocol version 6]] (IPv6).
Line 41:
IBM, AT&T and DEC were the first major corporations to adopt TCP/IP, this despite having competing [[proprietary protocol]]s. In IBM, from 1984, [[Barry Appelman]]'s group did TCP/IP development. They navigated the corporate politics to get a stream of TCP/IP products for various IBM systems, including [[MVS]], [[VM (operating system)|VM]], and [[OS/2]]. At the same time, several smaller companies, such as [[FTP Software]] and the [[Wollongong Group]], began offering TCP/IP stacks for [[DOS]] and [[Microsoft Windows]].<ref name="TtEPm">{{cite web| url = http://support.microsoft.com/kb/108007| title = Using Wollongong TCP/IP with Windows for Workgroups 3.11| website=Microsoft Support| archive-url=https://web.archive.org/web/20120112105314/http://support.microsoft.com/kb/108007| archive-date = 12 January 2012| url-status=dead}}</ref> The first [[VM/CMS]] TCP/IP stack came from the University of Wisconsin.<ref name="BZHnU">{{cite web|url=http://www.weblab.isti.cnr.it/education/ssfs/lezioni/slides/archives/cern.htm|title=A Short History of Internet Protocols at CERN|access-date=12 September 2016|archive-url=https://web.archive.org/web/20161110200124/http://www.weblab.isti.cnr.it/education/ssfs/lezioni/slides/archives/cern.htm|archive-date=10 November 2016|url-status=dead}}</ref>
 
Some ofprogrammers theare notable for early TCP/IP stacksstack were written single-handedly by a few programmersimplementations. Jay Elinsky and Oleg Vishnepolsky of IBM Research wrote TCP/IP stackssoftware for VM/CMS and OS/2, respectively.<ref>''An Introduction to Computer Networks''. Stanford University, CS144, Fall 2012, pp. 21–22. Available at: <nowiki>https://kirils.org/skype/stuff/pdf/2012/An_Introduction_to_Computer_Networksweek_one.pdf</nowiki></ref> In 1984, Donald Gillies at MIT wrote a ''ntcp'' multi-connection TCP which runs atop the IP/PacketDriver layer maintained by John Romkey at MIT in 1983–84. Romkey leveraged this TCP in 1986 when FTP Software was founded.<ref name="j7VeG">{{cite web |title= Desktop TCP/IP at middle age |last1= Baker |first1= Steven |last2= Gillies |first2= Donald W |url= http://www.ece.ubc.ca/~gillies/9802net.html |access-date= September 9, 2016 |archive-date= August 21, 2015 |archive-url= https://web.archive.org/web/20150821010509/http://www.ece.ubc.ca/~gillies/9802net.html |url-status= dead }}</ref><ref name="vss61">{{cite web|url=http://www.romkey.com/about/|title=About|last=Romkey|first=John|date=17 February 2011|access-date=12 September 2016|archive-date=November 5, 2011|archive-url=https://web.archive.org/web/20111105074443/http://www.romkey.com/about/|url-status=live}}</ref> Starting in 1985, Phil Karn created a multi-connection TCP application for ham radio systems (KA9Q TCP).<ref name="vCamZ">Phil Karn, ''KA9Q TCP Download Website''</ref>
 
The spread of TCP/IP was fueled further in June 1989, when the [[University of California, Berkeley]] agreed to place the TCP/IP code developed for [[BSD UNIX]] into the public ___domain. Various corporate vendors, including IBM, included this code in commercial TCP/IP software releases. For Windows 3.1, the dominant PC operating system among consumers in the first half of the 1990s, Peter Tattam's release of the [[Trumpet Winsock]] TCP/IP stack was key to bringing the Internet to home users. Trumpet Winsock allowed TCP/IP operations over a serial connection ([[Serial_Line_Internet Protocol|SLIP]] or [[Point-to-Point Protocol|PPP]]). The typical home PC of the time had an external Hayes-compatible modem connected via an RS-232 port with an [[8250]] or [[16550]] UART which required this type of stack. Later, Microsoft would release their own TCP/IP add-on stack for [[Windows for Workgroups]] 3.11 and a native stack in Windows 95. These events helped cement TCP/IP's dominance over other protocols on Microsoft-based networks, which included IBM's [[Systems Network Architecture]] (SNA), and on other platforms such as [[Digital Equipment Corporation]]'s [[DECnet]], [[Open Systems Interconnection]] (OSI), and [[Xerox Network Systems]] (XNS).
Line 65:
An early pair of architectural documents, {{IETF RFC|1122}} and {{IETF RFC|1123|plainlink=yes}}, titled ''Requirements for Internet Hosts'', emphasizes architectural principles over layering.{{Ref RFC|1958}} RFC 1122/23 are structured in sections referring to layers, but the documents refer to many other architectural principles, and do not emphasize layering. They loosely defines a four-layer model, with the layers having names, not numbers, as follows:{{ref RFC|1122}}{{ref RFC|1123}}
* The [[application layer]] is the scope within which applications, or [[Process (computing)|processes]], create user data and communicate this data to other applications on another or the same host. The applications make use of the services provided by the underlying lower layers, especially the transport layer which provides [[Reliability (computer networking)|reliable or unreliable]] ''pipes'' to other processes. The communications partners are characterized by the application architecture, such as the [[client–server model]] and [[peer-to-peer]] networking. This is the layer in which all application protocols, such as SMTP, FTP, SSH, and HTTP, operate. Processes are addressed via ports which essentially represent [[Service (systems architecture)|services]].
* The [[transport layer]] performs host-to-host communications on either the local network or remote networks separated by routers.<ref name="AoJD3">{{cite book |last=Hunt |first=Craig |date=2002 |title=TCP/IP Network Administration |edition=3rd |publisher=O'Reilly |pages=9–10 |isbn=9781449390785}}</ref> It provides a channel for the communication needs of applications. The [[User Datagram Protocol]] (UDP) is the most basic{{Citation needed|date=June 2025|reason=Which source states UDP is the most basic transport layer protocol ? I refer to Jim Kurose (2012), Computer Networking: A Top-Down Approach, 7th Edition, Chapter 3: Transport layer, Section 3.1 Introduction and Transport-layer services), which states that both TCP and UDP are two best known transport layer protocols, which made up many application layer protocols like HTTP, IMAP, POP3, and SMTP. So what makes UDP is the "most basic", compared to TCP ?}} transport layer protocol, providing an unreliable [[connectionless]] datagram service. The [[Transmission Control Protocol]] (TCP) provides flow-control, connection establishment, and reliable transmission of data.
* The [[internet layer]] exchanges datagrams across network boundaries. It provides a uniform networking interface that hides the actual topology (layout) of the underlying network connections. It is therefore also the layer that establishes internetworking. Indeed, it defines and establishes the Internet. This layer defines the addressing and routing structures used for the TCP/IP protocol suite. The primary protocol in this scope is the Internet Protocol, which defines [[IP address]]es.<ref>{{Cite journal |last=Guttman |first=E. |date=1999 |title=Service ___location protocol: automatic discovery of IP network services |url=http://dx.doi.org/10.1109/4236.780963 |journal=IEEE Internet Computing |volume=3 |issue=4 |pages=71–80 |doi=10.1109/4236.780963 |issn=1089-7801|url-access=subscription }}</ref>{{failed verification|date=April 2024}}<ref name=kz>{{Cite journal |last=Zheng |first=Kai |date=July 2017 |title=Enabling "Protocol Routing": Revisiting Transport Layer Protocol Design in Internet Communications |url=http://dx.doi.org/10.1109/mic.2017.4180845 |journal=IEEE Internet Computing |volume=21 |issue=6 |pages=52–57 |doi=10.1109/mic.2017.4180845 |issn=1089-7801|url-access=subscription }}</ref> Its function in routing is to transport datagrams to the next host, functioning as an IP router, that has the connectivity to a network closer to the final data destination.<ref name=kz/>{{failed verification|date=April 2024}}
* The [[link layer]] defines the networking methods within the scope of the local network link on which hosts communicate without intervening routers. This layer includes the protocols used to describe the local network topology and the interfaces needed to effect the transmission of internet layer datagrams to next-neighbor hosts.<ref>{{Cite journal |last=Huang |first=Jing-lian |date=2009-04-07 |title=Cross layer link adaptation scheme in wireless local area network |url=http://dx.doi.org/10.3724/sp.j.1087.2009.00518 |journal=Journal of Computer Applications |volume=29 |issue=2 |pages=518–520 |doi=10.3724/sp.j.1087.2009.00518 |doi-broken-date=NovemberJuly 1, 20242025 |issn=1001-9081|url-access=subscription }}</ref>
 
==Link layer==
{{main article|Link layer}}
The protocols of the link layer operate within the scope of the local network connection to which a host is attached. This regime is called the ''link'' in TCP/IP parlance and is the lowest component layer of the suite. The link includes all hosts accessible without traversing a router. The size of the link is therefore determined by the networking hardware design. In principle, TCP/IP is designed to be hardware independent and may be implemented on top of virtually any link-layer technology. This includes not only hardware implementations but also virtual link layers such as [[virtual private network]]s and [[tunneling protocol|networking tunnels]].
 
Line 78 ⟶ 77:
 
==Internet layer==
{{main article|Internet layer}}
[[Internetworking]] requires sending data from the source network to the destination network. This process is called [[routing]] and is supported by host addressing and identification using the hierarchical [[IP address]]ing system. The internet layer provides an unreliable datagram transmission facility between hosts located on potentially different IP networks by forwarding datagrams to an appropriate next-hop router for further relaying to its destination. The internet layer has the responsibility of sending packets across potentially multiple networks. With this functionality, the internet layer makes possible internetworking, the interworking of different IP networks, and it essentially establishes the Internet.
 
Line 86 ⟶ 84:
 
==Transport layer==
The transport layer establishes basic data channels that applications use for task-specific data exchange. The layer establishes host-to-host connectivity in the form of end-to-end message transfer services that are independent of the underlying network and independent of the structure of user data and the logistics of exchanging information. Connectivity at the transport layer can be categorized as either [[connection-oriented]], implemented in TCP, or [[connectionless]], implemented in UDP. The protocols in this layer may provide [[error control]], [[Network segmentation|segmentation]], [[Flow control (data)|flow control]], [[Network congestion|congestion control]], and application addressing ([[port numbers]]).
{{See also|Transport layer}}
The transport layer establishes basic data channels that applications use for task-specific data exchange. The layer establishes host-to-host connectivity in the form of end-to-end message transfer services that are independent of the underlying network and independent of the structure of user data and the logistics of exchanging information. Connectivity at the transport layer can be categorized as either [[connection-oriented]], implemented in TCP, or [[connectionless]], implemented in UDP. The protocols in this layer may provide [[error control]], [[Network segmentation|segmentation]], [[Flow control (data)|flow control]], [[Network congestion|congestion control]], and application addressing ([[port numbers]]).
 
For the purpose of providing process-specific transmission channels for applications, the layer establishes the concept of the [[network port]]. This is a numbered logical construct allocated specifically for each of the communication channels an application needs. For many types of services, these ''port numbers'' have been standardized so that client computers may address specific services of a server computer without the involvement of [[service discovery]] or [[directory service]]s.
Line 113 ⟶ 110:
 
==Application layer==
{{See also|Application layer#Internet protocol suite}}
The application layer includes the protocols used by most applications for providing user services or exchanging application data over the network connections established by the lower-level protocols. This may include some basic network support services such as [[routing protocol]]s and host configuration. Examples of application layer protocols include the [[Hypertext Transfer Protocol]] (HTTP), the [[File Transfer Protocol]] (FTP), the [[Simple Mail Transfer Protocol]] (SMTP), and the [[Dynamic Host Configuration Protocol]] (DHCP).<ref name="RxqD0">{{cite book|url=http://www.kohala.com/start/tcpipiv1.html|title=TCP/IP Illustrated: the protocols|isbn=0-201-63346-9|first=W. Richard|last=Stevens|author-link=W. Richard Stevens|date=February 1994|publisher=Addison-Wesley |access-date=April 25, 2012|archive-date=April 22, 2012|archive-url=https://web.archive.org/web/20120422024917/http://www.kohala.com/start/tcpipiv1.html|url-status=live}}</ref> Data coded according to application layer protocols are [[encapsulation (networking)|encapsulated]] into transport layer protocol units (such as TCP streams or UDP datagrams), which in turn use [[lower layer protocol]]s to effect actual data transfer.
 
Line 122 ⟶ 118:
At the application layer, the TCP/IP model distinguishes between ''user protocols'' and ''support protocols''.{{Ref RFC|1122|rsection=1.1.3}} Support protocols provide services to a system of network infrastructure. User protocols are used for actual user applications. For example, FTP is a user protocol and DNS is a support protocol.
 
Although the applications are usually aware of key qualities of the transport layer connection such as the endpoint IP addresses and port numbers, application layer protocols generally treat the transport layer (and lower) protocols as [[black box]]es which provide a stable network connection across which to communicate. The transport layer and lower-level layers are unconcerned with the specifics of application layer protocols. Routers and [[network switch|switches]] do not typically examine the encapsulated traffic, rather they just provide a conduit for it. However, some [[Firewall (computing)|firewall]] and [[bandwidth throttling]] applications use [[deep packet inspection]] to interpret application data. An example is the [[Resource Reservation Protocol]] (RSVP).<ref>{{citationCite web needed|last=Team |first=I. R. |title=A Breakdown of Deep Packet Inspection & How It Works I IR |url=https://www.ir.com/guides/deep-packet-inspection |access-date=May2025-07-13 2021|website=www.ir.com |language=en}}</ref> It is also sometimes necessary for [[Network address translation#Applications affected by NAT|Applications affected by NAT]] to consider the application payload.
 
==Layering evolution and representations in the literature==
Line 210 ⟶ 206:
The three top layers in the OSI model, i.e. the application layer, the presentation layer and the session layer, are not distinguished separately in the TCP/IP model which only has an application layer above the transport layer. While some pure OSI protocol applications, such as [[X.400]], also combined them, there is no requirement that a TCP/IP protocol stack must impose monolithic architecture above the transport layer. For example, the NFS application protocol runs over the [[External Data Representation]] (XDR) presentation protocol, which, in turn, runs over a protocol called [[Remote Procedure Call]] (RPC). RPC provides reliable record transmission, so it can safely use the best-effort UDP transport.
 
Different authors have interpreted the TCP/IP model differently, and disagree whether the link layer, or any aspect of the TCP/IP model, covers OSI layer 1 ([[physical layer]]) issues, or whether TCP/IP assumes a hardware layer exists below the link layer. Several authors have attempted to incorporate the OSI model's layers 1 and 2 into the TCP/IP model since these are commonly referred to in modern standards (for example, by [[IEEE]] and [[ITU]]). This often results in a model with five layers, where the link layer or network access layer is split into the OSI model's layers 1 and 2.<ref>{{cnCite web |last=Murray |first=Nick |date=September2018-11-28 2024|title=Network Layers Explained: OSI & TCP/IP Models [with examples] |url=https://www.plixer.com/blog/network-layers-explained/ |access-date=2025-07-13 |website=Plixer |language=en-US}}</ref>
 
The IETF protocol development effort is not concerned with strict layering. Some of its protocols may not fit cleanly into the OSI model, although RFCs sometimes refer to it and often use the old OSI layer numbers. The IETF has repeatedly stated<ref name="introduction-to-the-ietf" />{{failed verification|date=April 2024}} that Internet Protocol and architecture development is not intended to be OSI-compliant. RFC 3439, referring to the internet architecture, contains a section entitled: "Layering Considered Harmful".{{ref RFC|3439}}
Line 222 ⟶ 218:
==Implementations==
{{unreferenced section|date=March 2014}}
The Internet protocol suite doesis notgenerally presumeindependent anyof a specific hardware or software environment. It only requires thatthe hardware and a software layer existsto that isexist, capable of sending and receiving packets on a computer network. As a result, the suite has been implemented on essentially every computing platform. A minimal implementation of TCP/IP includes the following: [[Internet Protocol]] (IP), [[Address Resolution Protocol]] (ARP), [[Internet Control Message Protocol]] (ICMP), [[Transmission Control Protocol]] (TCP), [[User Datagram Protocol]] (UDP), and [[Internet Group Management Protocol]] (IGMP).<ref>{{CiteCitation| publisher = IETF| doi = 10.17487/RFC1122| last = Braden| first = Robert T.| editor-first1 = R.| editor-last1 = Braden| title = RFC 1122: Requirements for internet hosts - communication layers| year = 1989}}</ref>. In addition to IP, ICMP, TCP, UDP, Internet Protocol version 6 requires [[Neighbor Discovery Protocol]] (NDP), [[ICMPv6]], and [[Multicast Listener Discovery]] (MLD) and is often accompanied by an integrated [[IPSec]] security layer.
 
==See also==