- 인터넷의 기본 통신 언어
- 데이터가 의도된 목적지에 닿을 수 있도록 보장해주는 통신 규약
- 인터넷으로 디바이스를 연결하는 네트워크 프로토콜의 집합이며 개별적인 네트워크 프로토콜로 사용될 수도 있다.
- 클라이언트와 서버간에 데이터를 신뢰성 있게 전달하기 위해 만들어진 프로토콜이다.
- 데이터를 전송하기 전에 연결을 만드는 연결지향 프로토콜이다.
- 데이터는 네트워크 선로를 통해 전달되는 과정에서 손실되거나 순서가 뒤바뀌어 전달될 수 있는데, TCP는 손실을 검색해내서, 이를 교정하고 순서를 재조합할 수 있도록 해준다.
Internet Protocol의 줄임말로, 인터넷에서 컴퓨터의 위치를 찾아서 데이터를 전송하기 위해 지켜야할 규약
✔︎ Node-To-Node 간의 신뢰성 있는 데이터 전송을 담당
✔︎ 물리적인 주소로 MAC을 사용
✔︎ LAN, 패킷망 등에 사용
✔︎ 에러검출 기능(Detecting errors), 패킷의 프레임화(Framing packets)
📝 주요 프로토콜 : Ethernet, Token Ring, Frame Relay, ATM ...
✔︎ OSI 계층의 네트워크 계층에 해당 (3계층에 해당)
✔︎ 호스트간의 라우팅 담당
✔︎ 상위 트랜스포트 계층으로부터 받은 데이터에 IP패킷 헤더를 붙혀 IP패킷을 만들고 이를 전송
✔︎ 어드레싱(addressing), 패키징(packaging), 라우팅(routing) 기능을 제공
✔︎ 통신 노드 간의 IP패킷을 전송하는 기능과 라우팅 기능을 담당
📝 주요 프로토콜
IP(Internet Protocol) : 비신뢰성, 비연결지향 데이터그램 프로토콜
ARP(Address Resolution Protocol) : 주소변환 프로토콜 (ip주소를 MAC주소로 변환하는 프로토콜)
RARP(Reverse ARP) : 반대로 MAC주소로 IP주소를 찾는 프로토콜
ICMP(Internet Control Message Protocol) : 상태 진단 메시지 프로토콜. (대표적 프로그램 : ping)
IGMP(Internet Group Management Protocol) : 멀티캐스트용 프로토콜
OSPF(Open Shortest Path First) : 링크 상대 라우팅 프로토콜 (인터넷에서 연결된 링크의 최적의 경로를 선택함)
✔︎ 프로세스간의 신뢰성있는 데이터 전송을 담당
✔︎ 통신 노드 간의 연결을 제어
✔︎ 네트워크 양단의 송수신 호스트 사이에서 신뢰성 있는 데이터 전송을 담당
📝 주요 프로토콜 : TCP, UDP
✔︎ 사용자와 가장 가까운 계층
✔︎ 서버나 클라이언트 응용 프로그램이 이 계층에서 동작
✔︎ 동작하기 위해서는 전송계층의 주소, 즉 포트번호를 사용
✔︎ TCP/UDP 기반의 응용 프로그램을 구현할 때 사용
📝 응용 계층 프로토콜의 종류
☑️ 전송을 담당하는 IP
IP는 계층으로 따지면 네트워크 계층에 해당한다. 인터넷 프로토콜이라는 이름에서 알 수 있듯이 실제로 인터넷을 활용하는 모든 시스템이 IP를 사용하고 있다. IP의 역할은 각 패킷을 상대방에게 전달하는 것이다. 패킷이 상대방에게 전달되기 위해서는 여러가지 조건이 필요하다. 그 중에서도 각 노드의 위치를 나타내는 IP주소의 역할은 중요하다. 목적지까지 중계를 해주는 도중의 컴퓨터 또는 라우터와 같은 네트워크 장비는 목적지에 도착하기 위한 대략적인 행선지만 알고있다. 이런 구조를 라우팅이라고 한다.
☑️ 신뢰성을 담당하는 TCP
TCP는 전송계층에 해당하는 프로토콜로 신뢰성을 가진 바이트스트림을 사용한다. 바이트 스트림은 커다란 데이터를 보내기 쉽도록 TCP세그먼트라고 하는 단위의 패킷으로 작게 나누어 전송한다. 이때 각 패킷에는 번호가 붙기 때문에 누락된 패킷이 있는지 검증할 수 있고 신뢰도를 담보할 수 있다. 즉 TCP는 큰 데이터를 보내기 쉽도록 자른 후 확실히 상대에게 잘 도착했는지 확인하는 역할을 한다. TCP는 패킷에 플래그를 갖게 되는데, 플래그를 변경해서 몇 기능을 사용 할 수 있다.
☑️ 이름 변환을 담당하는 DNS
네트워크를 이용하는 컴퓨터는 IP주소와는 별개로 호스트 이름 www를 붙일 수 있다. DNS는 HTTP와 같은 응용프로그램 계층 시스템으로 주로 호스트 이름이나 도메인 이름 IP주소의 이름 변환을 제공한다. 이름 변환이란 사람이 쉽게 외우기 힘든 IP주소를 사람이 좀 더 외우기 쉬운 도메인 이름으로 변경하거나 반대로 도메인 이름을 IP주소로 변경하는 작업을 말한다.