OSI 7
- 전송 프로토콜을 계층으로 표현 (국제 ISO 표준 규격)
- 1 ~ 7 계층으로 이루어져 있음
- 1 ~ 4 하위계층 / 5 ~ 7 상위계층
- 상위계층으로 갈수록 소프트웨어어 가까워짐 하위계층은 하드웨어에 가까워짐
- 상위계층은 하위계층의 기능을 이어받아 사용
[제 1계층] 물리 계층(Physical Layer)
- 시스템의 물리적 전기적 표현을 나타내는 계층
- 케이블 종류, 무선 주파수 링크, 핀, 전압 등의 물리적인 요건을 의미합니다.
- 라우터나 스위치의 전원이 켜져있는지, 케이블이 제대로 연결되어있는지 여부 등에 모두 1계층인 물리 계층에 해당되는 이야기입니다.
[제 2계층] 데이터 링크 계층(Data Link Layer)
- 데이터 링크 계층은 직접적으로 연결된 두 개의 노드 사이에 데이터 전송을 가능하게 함
- 물리 계층에서 발생한 오류를 수정하기도 함
- 또한 대부분의 스위치는 바로 2계층인 데이터 링크 계층에서 작동합니다.
[제 3계층] 네트워크 계층(Network Layer)
- 네트워크의 핵심인 라우팅(데이터가 가야 할 길을 찾는 기능)의 대부분이 3계층인 네트워크 계층에서 작동
- 이 계층은 여러 대의 라우터들을 바탕으로 데이터를 패킷 단위로 잘게 쪼개어 전송하는 층위에 해당합니다.
- 데이터가 전송될 수 있는 수 많은 경우의 수 중 가장 효율적인 라우팅이 방법을 찾는 것 또한 이 단계에서 가능해집니다.
[제 4계층] 전송 계층(Transport Layer)
- 전송 계층은 보내고자 하는 데이터의 용량과, 속도, 목적지를 처리합니다.
- 전송 계층에 가장 대표적인 것은 전송 제어 프로토콜(TCP)입니다.
- TCP는 인터넷 프로토콜(IP) 위에 구축되기 때문에 TCP/IP로 알려져 있습니다.
[제 5계층] 세션 계층(Session Layer)
- 5계층에서 실제 네트워크 연결이 이뤄집니다.
- 두 대의 기기가 ‘대화’하기 위해서는 하나의 ‘세션’이 열려야만 합니다.
- 세션 계층에서는 프로세스간의 통신을 제어하고, 통신과정이 진행될 때 동기화를 유지하는 역할을 합니다.
[제 6계층] 표현 계층(Presentation Layer)
- 응용프로그램 형식을 네트워크 형식으로 변환하거나 그 반대의 경우가 일어나는 계층이 표현 계층입니다.
- 6계층은 응용프로그램 혹은 네트워크를 위해 데이터를 ‘표현’하는 계층에 해당합니다.
- 대표적인 예로 데이터를 안전하게 주고 받기 위해 암호화하고 복호화 하는 과정이 필요한데 이러한 과정이 바로 표현 계층인 6계층에서 이루어집니다.
[제 7계층] 응용 계층(Application Layer)
- 마지막 응용 계층은 사용자가 네트워크에 접근할 수 있도록 인터페이스를 제공하는 계층입니다.
- 사용자에게 가장 직접적으로 보이는 부분이 바로 이 응용 계층에 해당하는 것입니다.
- 구글의 크롬과 같은 브라우저나 스카이프, 아웃룩 등의 응용프로그램이 이 응용 계층에서 동작합니다.
TCP & UDP
- 4계층인 전송 계층(Transport Layer)에 속한다.
TCP (Transmission Control Protocol)
- 서버와 클라이언트간 신뢰성이 있는 데이터 송 • 수신을 위해 만들어진 Protocol
- 연결 지향성 ( Connection Oriented ) Protocol
- data를 나눠서 보낼 수 있으며(Inititor), 받는쪽(Receiver)에서 나누어 받은
데이터를 제조립, 누락이 있으면 재요청하여 완전한 Data를 만듬
- TCP로 Server ⌁ Client 된 경우 데이터를 양방향으로 주고 받을 수 있다.
- Data의 순서가 뒤바뀌는 일이 없어 신뢰가 가능
- UDP에 비해 송수신 Cost가 큼
- UDP에 비해 전송 속도가 느림
✓ 이메일 , 파일전송드에 사용
제어비트 (Flag Bit)
ACK (Acknowledgment)
- 다른 컴퓨터 나 네트워크 장치가 다른 컴퓨터에 SYN / ACK 또는 다른 요청을 보낸 것을 확인한 응답을 나타냄
SYN (Synchronize)
- 다른 컴퓨터로 전송 된 TCP 패킷으로 연결이 이루어 지도록 요청
TCP Connection (3-way handshake)
- open()을 실행한 Sender가
SYN
을 보내고SYN_SENT
상태로 대기 - Reciver는
SYN_RCVD
상태로 바꾸고SYN
과 응답ACK
를 보낸다. -
SYN
과 응답ACK
을 받은 Sender는ESTABLISHED
상태로 변경하고 Reciver에게 응답ACK
를 보낸다. - 응답
ACK
를 받은 서버는ESTABLISHED
상태로 변경
TCP Disconnection (4-way handshake)
- close()를 실행한 Sender가 FIN을 보내고
FIN_WAIT1
상태로 대기 -
Reciver는
CLOSE_WAIT
으로 바꾸고 응답 ACK를 전달한다. 동시에 해당 포트에 연결되어 있는 어플리케이션에게 close()를 요청 - ACK를 받은 Sender는 상태를
FIN_WAIT2
로 변경 - close() 요청을 받은 Reciver 어플리케이션은 종료 프로세스를 진행하고
FIN
을 Sender에 보내LAST_ACK
상태로 바꿈 -
- FIN을 받은 Sender는 ACK를 서버에 다시 전송하고
TIME_WAIT
으로 상태를 바꾼다.TIME_WAIT
에서 일정 시간이 지나면CLOSED
된다. ACK를 받은 Reciver도 포트를CLOSED
로 닫는다.
- FIN을 받은 Sender는 ACK를 서버에 다시 전송하고
UDP ( User Datagram Protocol )
- 비연결성 단방향 통신 Protocol
- Data를 보내도 제대로 recive 했는지 확인이 되지 않아 신뢰도가 떨어짐
- Inititor가 순차적으로 Data를 보내도 Reciver는 다른 순서로 전달 받을 수 있음
- Data를 보내기만 하고 별도의 처리가 없어 TCP에 비해 Cost 발생이적음
- TCP 보다 전송속도가 빠름
✓ DNS, IPTV, VoIP, TFTP, IP터널 , 온라인 게임등에서 사용
공통점
- 포트 번호를 이용하여 주소를 지정
- 데이터 오류 검사를 위한 체크섬 존재
차이점
TCP | UDP |
---|---|
연결이 성공해야 통신 가능(연결형 프로토콜) | 비연결형 프로토콜(연결없이 통신 가능) |
데이터의 경계를 구분하지 않음(Byte-Stream Service) | 데이터의 경계를 구분함(Datagram Service) |
신뢰성 있는 데이터 전송(데이터의 재전송 존재) | 비신뢰성 있는 데이터 전송(데이터의 재전송 없음) |
일 대 일(Unicast) 통신 | 일 대 일, 일 대 다(Broadcast), 다 대 다(Multicast) 통신 |