OSI 7

  • 전송 프로토콜을 계층으로 표현 (국제 ISO 표준 규격)
  • 1 ~ 7 계층으로 이루어져 있음
  • 1 ~ 4 하위계층 / 5 ~ 7 상위계층
  • 상위계층으로 갈수록 소프트웨어어 가까워짐 하위계층은 하드웨어에 가까워짐
  • 상위계층은 하위계층의 기능을 이어받아 사용

계층

[제 1계층] 물리 계층(Physical Layer)

  • 시스템의 물리적 전기적 표현을 나타내는 계층
  • 케이블 종류, 무선 주파수 링크, 핀, 전압 등의 물리적인 요건을 의미합니다.
  • 라우터나 스위치의 전원이 켜져있는지, 케이블이 제대로 연결되어있는지 여부 등에 모두 1계층인 물리 계층에 해당되는 이야기입니다.
  • 데이터 링크 계층은 직접적으로 연결된 두 개의 노드 사이에 데이터 전송을 가능하게 함
  • 물리 계층에서 발생한 오류를 수정하기도 함
  • 또한 대부분의 스위치는 바로 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에 비해 전송 속도가 느림
✓ 이메일 , 파일전송드에 사용

TCP1

제어비트 제어비트 (Flag Bit)

ACK (Acknowledgment)
  • 다른 컴퓨터 나 네트워크 장치가 다른 컴퓨터에 SYN / ACK 또는 다른 요청을 보낸 것을 확인한 응답을 나타냄
SYN (Synchronize)
  • 다른 컴퓨터로 전송 된 TCP 패킷으로 연결이 이루어 지도록 요청

TCP Connection (3-way handshake)

  1. open()을 실행한 Sender가 SYN을 보내고 SYN_SENT 상태로 대기
  2. Reciver는 SYN_RCVD 상태로 바꾸고 SYN과 응답 ACK를 보낸다.
  3. SYN과 응답 ACK을 받은 Sender는 ESTABLISHED 상태로 변경하고 Reciver에게 응답 ACK를 보낸다.
  4. 응답 ACK를 받은 서버는 ESTABLISHED 상태로 변경

TCP Disconnection (4-way handshake)

  1. close()를 실행한 Sender가 FIN을 보내고 FIN_WAIT1 상태로 대기
  2. Reciver는 CLOSE_WAIT으로 바꾸고 응답 ACK를 전달한다. 동시에 해당 포트에 연결되어 있는 어플리케이션에게 close()를 요청
  3. ACK를 받은 Sender는 상태를 FIN_WAIT2로 변경
  4. close() 요청을 받은 Reciver 어플리케이션은 종료 프로세스를 진행하고 FINSender에 보내  LAST_ACK 상태로 바꿈
    1. FIN을 받은 Sender는 ACK를 서버에 다시 전송하고 TIME_WAIT으로 상태를 바꾼다.  TIME_WAIT에서 일정 시간이 지나면 CLOSED된다. ACK를 받은 Reciver도 포트를 CLOSED로 닫는다.

UDP ( User Datagram Protocol )

- 비연결성 단방향 통신 Protocol
- Data를 보내도 제대로 recive 했는지 확인이 되지 않아 신뢰도가 떨어짐
- Inititor가 순차적으로 Data를 보내도 Reciver는 다른 순서로 전달 받을 수 있음
- Data를 보내기만 하고 별도의 처리가 없어 TCP에 비해 Cost 발생이적음
- TCP 보다 전송속도가 빠름
✓ DNS, IPTV, VoIP, TFTP, IP터널 , 온라인 게임등에서 사용

UDP


공통점

  • 포트 번호를 이용하여 주소를 지정
  • 데이터 오류 검사를 위한 체크섬 존재

차이점

TCP UDP
연결이 성공해야 통신 가능(연결형 프로토콜) 비연결형 프로토콜(연결없이 통신 가능)
데이터의 경계를 구분하지 않음(Byte-Stream Service) 데이터의 경계를 구분함(Datagram Service)
신뢰성 있는 데이터 전송(데이터의 재전송 존재) 비신뢰성 있는 데이터 전송(데이터의 재전송 없음)
일 대 일(Unicast) 통신 일 대 일, 일 대 다(Broadcast), 다 대 다(Multicast) 통신