이 챕터에서는 OSI 7 Layers에 대해 주로 다룰 예정이다.
그에 앞서 우선 OSI가 뭔지 알고 갈 필요가 있다. OSI란 Open System Interconnection으로 즉, 개방형 시스템간 상호 접속을 의미한다.
ISO(국제표준화기구)에서 컴퓨터의 통신, 네트워크간의 상호 접속을 용이하게 하기 위해 규정한 네트워크 프로토콜로 표준화, 상호통신을 가능하게 한다.
여기서 언급하는 OSI 7계층은 프로토콜을 기능별로 나눈 것이다.
각 계층은 하위 계층의 기능만 이용하고 상위 계층에게 기능을 제공한다. 일반적으로 하위 계층들은 하드웨어로, 상위 계층들은 소프트웨어로 구현된다.
물리층은 프레임의 각 비트들을 링크 건너편으로 전달할 책임이 있다고 말할 수 있다. 비록 물리층이 TCP/IP 프로토콜 그룹에서 가장 낮은 단계의 계층이긴 하지만, 또 다른 숨겨진 계층인 전송매체가 물리층 아래에 존재하기 때문에 물리층에서의 두 장치 사이의 통신은 여전히 논리적 통신이다.
두 장치는 전송 매체(케이블 혹은 공기)에 의해 연결된다. 여기서 전송 매체가 비트들을 전송하는 것이 아니라 전기 또는 광학 신호들을 전송한다는 것을 알아야 한다.
데이터그램(Datagram)이 호스트로부터 목적지까지 전달될 수 있는 중첩되는 여러 개의 링크 쌍이 존재할 수 있으며, 라우터들은 최상의 링크를 선택할 책임이 있다. 그러나 일단 전송할 다음 링크가 라우터에 의해 결정되면 데이터 링크층은 데이터그램을 받아 해당 링크로 전송할 책임이 있다.
그 링크는 링크층 스위치를 가진 유선 LAN, 무선 LAN, 유선 WAN 또는 무선 WAN이 될 수 있다. 또한 링크 유형마다 다른 프로토콜들을 가질 수 있다. 각각의 상황에서 데이터 링크층은 그 링크를 통해 패킷을 이동시킬 책임이 있다.
TCP/IP는 모든 표준과 적절한 프로토콜들을 지원한다. 데이터그램을 받을 수 있고 그것을 링크를 통해 운반할 수 있다면 어떤 프로토콜이라도 네트워크층을 위해서는 충분하다. 데이터 링크층은 데이터그램을 받아서 프레임(Frame)이라고 하는 패킷으로 캡슐화한다.
각 링크층 프로토콜은 각각 다른 서비스를 제공할 수도 있다. 어떤 링크층 프로토콜은 완벽한 오류 탐지와 교정을 제공하고, 또 어떤 프로토콜은 오직 오류 교정만을 제공한다.
네트워크층은 발신지 컴퓨터와 목적지 컴퓨터 사이의 연결을 생성하기 위한 책임을 가진다. 네트워크층의 통신은 호스트-대-호스트(Host-to-Host)이다. 그러나 발신지로부터 목적지까지 여러 라우터들이 존재할 수 있기 때문에 경로상의 라우터들은 각 패킷을 위한 최선의 경로를 선택할 책임을 가진다.
네트워크층은 호스트-대-호스트 통신과 가능한 경로들을 통해 패킷을 라우팅하기 위한 책임을 가지고 있다.
인터넷에서 네트워크층은 주요한 프로토콜로서 네트워크층에서 데이터그램이라는 패킷의 형식을 정의하는 인터넷 프로토콜(IP, Internet Protocol)을 포함한다. IP는 또한 패킷을 발신지로부터 목적지까지 라우팅할 책임이 있으며 이는 해당 경로에 있는 다음 라우터에 데이터그램을 포워딩(forwarding)하는 각 라우터에 의해 수행된다.
IP는 흐름 제어, 오류 제어, 혼잡 제어 서비스들을 제공하지 않는 비연결형(connectionless)프로토콜이다.
네트워크층은 또한 일-대-일(unicast)과 일-대-다(multicast) 라우팅 프로토콜을 포함한다. 비록 라우팅 프로토콜이 라우팅에 참여하는 것은 아니지만(라우팅 프로토콜은 IP의 책임)라우팅 프로세스를 수행하는 라우터들을 돕기 위해 포워딩 테이블들을 생성한다.
전송층의 논리적 연결 또한 종단-대-종단이다. 발신지 호스트의 전송층은 응용층으로부터 메시지를 받아 전송층 패킷으로 캡슐화한 후 목적지 호스트의 전송층에 (가상의)논리적 연결을 통해 전송한다. 다시 말해서 전송층은 발신지 호스트에서 동작하는 응용으로부터의 메시지를 받는 것과 그것을 목적지 호스트의 대응하는 응용에 전송하는 일을 하는, 즉, 응용층에 서비스를 제공하기 위한 책임이 있는 것이다.
이미 종단-대-종단의 응용층을 가지고 있음에도 불구하고 왜 종단-대-종단 전송층을 필요로 하는지에 대해 질문하는 사람도 있을 것이다. 그 이유는 작업과 역할의 분리이다. 즉, 전송층은 반드시 응용층으로부터 독립적이어야 한다.
응용층의 통신은 두 프로세스 사이에 있다. 통신을 위해 하나의 프로세스는 다른 프로세스에 요청 메시지를 전송하고 응답 메시지를 수신한다.
프로세스간 통신(Process-to-Process Communication)은 응용층의 역할이다. 인터넷의 응용층은 미리 정의된 많은 프로토콜들을 포함한다.
하이퍼텍스트 전송 프로토콜(HTTP, Hypertext Transfer Protocol)은 월드 와이드 웹(World Wide Web)에 접속하기 위한 수단이다.
단순 우편 전달 프로토콜(SMTP, Simple Mail Transfer Protocol)은 전자우편(e-mail, electronic mail) 서비스에 주로 사용되는 프로토콜이다.
파일 전송 프로토콜(FTP, File Transfer Protocol)은 하나의 호스트에서 또 다른 호스트로 파일을 전송하기 위해 사용되어진다.
텔넷(TELNET, Terminal Network)과 보안 쉘(SSH, Secure Shell)은 사이트에 원격으로 접속하기 위해 사용된다.
단순 망 관리 프로토콜(SNMP, Simple Network Management Protocol)은 전역 또는 지역 레벨의 인터넷을 관리하기 위해 사용된다.
도메인 이름 시스템(DNS, Domain Name System)은 컴퓨터의 네트워크층 주소를 찾기 위해 다른 프로토콜들에 의해 사용된다.
인터넷 그룹 관리 프로토콜(IGMP, Internet Group Management Protocol)은 그룹 소속원을 수집하기 위해 사용된다.