프로토콜과 OSI 7 Layer

oyeon·2023년 9월 14일
0

컴퓨터 네트워크

목록 보기
2/15

프로토콜

  • 네트워크 통신을 하기 위해서 통신에 참여하는 주체들이 따라야 하는 형식, 절차, 규약

OSI Model (7 layer)

  • 각 레이어에 맞게 프로토콜이 세분화돼서 구현
  • 각 레이어의 프로토콜은 하위 레이어의 프로토콜이 제공하는 기능을 사용하여 동작

7L: Application layer

  • 애플리케이션 목적에 맞는 통신 방법 제공
  • HTTP, DNS, SMTP, FTP

6L: Presentation layer

  • 애플리케이션 간의 통신에서 메시지 포맷 관리
  • 인코딩 ↔ 디코딩, 암호화 ↔ 복호화, 압축 ↔ 압축 풀기

5L: Session layer

  • 애플리케이션 간의 통신에서 세션을 관리
  • RPC(Remote Procedure Call)

4L: Transport layer

  • 애플리케이션 간의 통신 담당 (어떤 어플리케이션에 데이터를 전달하면 되는지?)
  • 목적지 애플리케이션으로 데이터 전송
  • 안정적이고 신뢰할 수 있는 데이터 전송 보장(TCP)
  • 필수 기능만 제공(UDP)

3L: Network layer

  • 호스트 간의 통신 담당(IP) (어떤 호스트에 데이터를 전달하면 되는지?)
  • 목적지 호스트로 데이터 전송
  • 네트워크 간의 최적의 경로 결정
  • 직접 연결된 노드 간의 통신 담당 (어떤 노드에 데이터를 전달하면 되는지?)
  • MAC 주소 기반 통신(ARP: IP주소를 MAC주소로 변환)

1L: Physical layer

  • bits 단위의 row 데이터로 바꿔 데이터 전송

Youtube 시청하려는 client 가 message를 보내는 과정

  1. message를 application layer의 정보를 담은 header 와 함께 포장하고 presentation layer 로 내린다 (7L → 6L)
  2. 포장된 값을 다시 layer의 정보를 담은 header와 함께 포장하고 넘기는 과정을 2L까지 반복.
  3. Data link layer의 정보를 담은 header와 Data link layer의 trailer (전송 후에 에러가 없었는지 확인하는 용도)를 만들어 함께 포장한 후에 physical layer로 내린다 (2L → 1L)
  4. Physical layer 는 데이터를 bits 단위의 row 데이터로 바꿔 다음 노드(Router 또는 Server가 될 것이다. 여기서는 Router 라고 가정)로 전송
  5. Router는 전송받은 bit 단위 데이터를 이해할 수 있는 데이터(헤더가 붙어있는 데이터)로 변환하여 data link layer 로 올린다 (1L → 2L)
  6. Data link layer에서 header와 trailer를 확인하고 이런저런 처리를하고 문제가 없으면 떼어내 network layer로 올린다 (2L → 3L)
  7. Router에서 network layer의 header에 목적지 ip가 있기 때문에 이 정보를 바탕으로 다음으로 이동해야 하는 노드(다른 Router 또는 Server가 될 것이다. 여기서는 Server라고 가정, 다른 Router일 경우 5단계 ~ 9단계 반복)를 파악. Network layer 헤더에서 고쳐줄 내용을 일부 고친 후에 다시 data link layer로 내린다 (3L → 2L)
  8. Data link layer는 두 노드 사이의 통신을 담당할 것이기 때문에 관련된 정보들을 header와 trailer에 담아서 physical layer로 넘긴다.(2L → 1L)
  9. Physical layer 는 데이터를 bits 단위의 row 데이터로 바꿔 Server 로 전송
  10. Server는 전송받은 bit 단위 데이터를 이해할 수 있는 데이터(헤더가 붙어있는 데이터)로 변환하여 data link layer 로 올린다. (1L → 2L)
  11. Data link layer에서 header와 trailer를 확인하고 이런저런 처리를하고 문제가 없으면 떼어내 network layer로 올린다 (2L → 3L)
  12. Network layer에서는 헤더를 확인하여 IP가 목적지 호스트인 것을 확인. 이런저런 처리를 하고 헤더를 떼어내고 Transport layer 로 올린다(3L → 4L)
  13. Transport layer에서는 애플리케이션 간의 데이터를 전달하기 때문에, 헤더를 참고하여 어떤 애플리케이션에 전달하면 되는지 판단하여 유튜브 Server application 으로 전달하면 되는지를 확인하고, 헤더를 떼어내어 session layer 로 올린다(4L → 5L)
  14. 5L → 6L, 6L → 7L 도 비슷한 과정으로 이런저런 처리 후, 헤더를 떼어내고 올린다.
  15. 7L: application layer에서는 최종적으로 헤더를 보고 이런저런 처리 후 떼어낸다. 그러면 처음에 client가 보낸 message를 받게 된다.

용어

  • Encapsulation: 위의 예시에서 내리는 과정(포장)
  • Decapsulation: 위의 예시에서 올리는 과정(포장까기)

프로토콜 계층(TCP/IP stack)

4L: 애플리케이션 계층 - HTTP, FTP

3L: 전송 계층 - TCP, UDP

2L: 인터넷 계층 - IP

1L: 네트워크 인터페이스 계층(NIC)

과정

  1. 4L: 프로그램이 Hello, world! 메시지 생성
  2. 4L → 3L: SOCKET 라이브러리를 통해 메시지 전달
  3. 3L → 2L: 메시지 데이터 포함하여 TCP 정보 생성 후 인터넷 계층 전달
  4. 2L → 1L: TCP 데이터 포함하여 IP 패킷 생성 후 NIC 전달
  5. 1L: IP패킷 포함하여 Ethernet frame 으로 감싸 LAN카드 통해 인터넷으로 전달

TCP 특징

전송 제어 프로토콜(Transmission Control Protocol)

  • 연결지향 - TCP 3 way handshake (가상연결)
    1) Client가 SYN(접속요청) 보냄
    2) Server가 SYN+ACK 보냄
    3) Client가 ACK(요청수락) 보냄
  • 데이터 전달 보증
    1) Client가 데이터 전송
    2) Server가 데이터를 잘 받았다고 Client에게 응답
  • 순서 보장
    1) Client가 패킷1, 2, 3 순서로 전송
    2) Server로 패킷1, 3, 2 순서로 도착
    3) Server는 Client에게 패킷2부터 다시 보내라고 요청
  • 신뢰할 수 있는 프로토콜
  • 현재는 대부분 TCP 사용

UDP 특징

사용자 데이터그램 프로토콜(User Datagram Protocol)

  • 하얀 도화지에 비유(기능이 거의 없음)
  • 연결지향 X - TCP 3 way handshake
  • 데이터 전달 보증 X
  • 순서 보장 X
  • 단순하고 빠름
  • IP와 거의 같음(PORT, checksum 정도 추가)

reference
https://www.youtube.com/watch?v=6l7xP7AnB64&list=PLcXyemr8ZeoSGlzhlw4gmpNGicIL4kMcX&index=2
https://velog.io/@oyeon/OSI-7-Layer
https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard

profile
Enjoy to study

0개의 댓글

관련 채용 정보