[CS 스터디-Network] OSI/TCP, IP/UDP

똘맹·2023년 5월 13일

CS 스터디

목록 보기
8/20
post-thumbnail


1. OSI Protocol

(1) OSI Protocol

OSI(Open Systems Interconnection)는 다른 종류의 computer을 연결하기 위한 표준을 정의하는 framework이다. 7개의 layer을 가지고 있어서 시간과 비용이 많이 들어 실제로 구현은 되지 않았다.

communication을 하기 위해 계층화된 layer의 집합으로 나누고, primitive function을 수행하기 위해 아래 계층에 의존하고 윗 계층으로 service를 제공한다.

(2) 인접 layer간의 service

프로토콜은 두 system의 같은 layer에서 작동하며, 다른 OS에서도 작동할 수 있다. 또한, Addressing이라는 service를 제공하는 point(SAP)를 이용하여 상위 계층에 service를 제공한다.

인접 layer간의 service 제공은 primitive와 parameter에 의해 이루어진다.

  • primitive: 수행되는 기능을 명시(Request/Indication/Response/Confirm)
  • parameter: data와 control information 등을 넘겨줌.

다음 그림에서 (a)는 confirmed sercice로, source의 n계층에서 request를 보내면 destination의 n계층에서 받고 응답을 주면 source에서 confirm하는 시스템이다. (b)는 source의 n계층에서 request를 보내면 destination의 n계층이 받기만 하는 시스템이다.

(3) OSI Layers

  • Layer 1 - Physical(물리) 계층 : 전기적 신호가 나가는 물리적인 장비로, 단지 데이터를 전달할 뿐 전송하려는 데이터가 무엇인지/어떤 에러가 있는지는 신경쓰지 않는다. 데이터를 전기적인 신호로 변환하여 주고받는 기능만 한다.

  • Layer 2 - Data link 계층 : Layer 1을 통해 송수신되는 정보의 오류와 흐름을 관리하여 안전한 정보 전달을 수행할 수 있도록 한다. 통신에서의 오류를 찾고 재전송하는 기능을 하며, 맥 주소를 가지고 통신한다. Point-to-Point간의 신뢰성 있는 전송을 보장하기 위한 계층이다.

  • Layer 3 - Network 계층 : 경로(Route)와 주소(IP)를 정하여 패킷을 전달하는 계층이다. 목적지까지 가장 안전하고 빠르게 데이터를 보내는 역할을 하며, 최적의 경로 설정이 중요하다. 즉, 라우팅 기능을 전담하는 계층이다.

  • Layer 4 - Transport 계층 : end point사이의 data 전송과 error control, flow control, congestion(정체) control을 지원한다. 하나의 data를 packet으로 쪼개서 보낼 때, packet이 순서대로 보내져서 전체 data가 올바르게 도착하도록 reliable delivery를 지원한다. 모든 application에 의해 공유되는 common layer이며, application의 성격에 독립적이다. application마다 분리되어 있는 module이 필요하다. TCP(Transmission Control Protocol)와 UDP를 사용한다.

  • Layer 5 - Session 계층 : 응용 프로세스가 통신을 관리하기 위한 방법 정의하는 계층이다. TCP/IP 세션을 만들고 없앤다.

  • Layer 6 - Presentation 계층 : 전송하는 데이터의 표현 방식(GIF/JPEG/ASCII 등)을 결정하는 계층으로, 데이터 변환/압축/암호화 등의 역할을 한다. 인코딩이나 암호화 등의 동작이 이루어지며, 다음의 세 가지 기능을 가진다.

    • 송신자에서 온 데이터를 해석하기 위한 응용 계층의 데이터 부호화 및 변화
    • 수신자에서 데이터의 압축을 풀 수 있는 방식으로 된 데이터 압축
    • 데이터의 암호화, 복호화
  • Layer 7 - Application 계층 : 사용자가 사용하는 응용 서비스나 프로세스가 동작하는 계층이다. HTTP, FTP 등의 프로토콜이 이 계층에 속한다.


2. TCP/IP Protocol

(1) TCP/IP Protocol

TCP/IP Protocol Architecture은 ARPANET에서 만든 protocol이다. TCP/IP는 Internet 표준이 되는 protocol의 집합이고, 5개의 계층을 갖는다.

(2) TCP/IP Layers

  • Layer 1 - Physical(물리) 계층 : 물리적인 전송 매체를 통해 data를 전송하고, data를 Encoding, Decoding한다. 전송 매체의 특성과 signal의 성질, data rate에 대한 issue를 커버한다.

  • Layer 2 - Network Access 계층 : actual network hardware에서 컴퓨터(end system)와 network 사이의 논리적인 interface를 하게 한다. 이 계층에서는 각각의 packet이 오류 없이 전송되는 reliable delivery를 지원한다. Destination의 주소를 제공하고, 보내는 data의 우선순위를 설정하며, 같은 network에 연결된 end system의 data에 access하고 routing한다. 이 계층에서 사용되는 software은 network type(ex : WAN, wireless LAN ... )에 의존적이다. 윗 계층의 network type은 고려하지 않는다.

  • Layer 3 - Internet 계층 : Data가 여러 개의 network에 연결되어 있을 때 길을 찾아가는 과정을 다룬다. routing function을 제공하기 위해 사용되는 계층이다. router는 두 network를 연결하고 그 사이에서의 data를 전달한다. OSPF, RSVP가 routing관련된 예시이며, ARP는 주소와 관련된 예시이다.

  • Layer 4 - Transport 계층 : end point사이의 data 전송과 error control, flow control, congestion(정체) control을 지원한다. 하나의 data를 packet으로 쪼개서 보낼 때, packet이 순서대로 보내져서 전체 data가 올바르게 도착하도록 reliable delivery를 지원한다. 모든 application에 의해 공유되는 common layer이며, application의 성격에 독립적이다. application마다 분리되어 있는 module이 필요하다. TCP(Transmission Control Protocol)와 UDP를 사용한다.

  • Layer 5 - Application 계층 : 사용자에게 TCP/IP 환경의 접근성을 갖게 한다. SSH는 secure shell이다.

(3) Operation of TCP/IP

다음의 그림은 TCP/IP protocol을 사용하는 통신이다.

Network 1에 연결된 Host A와 Network 2에 연결된 Host B가 Router를 통해 연결되었다. Network 1과 2의 유사도에 따라서 쓰이는 Router가 달라진다.(같은 network면 switch로 연결) Router의 왼쪽(NAP1, Physical 부분)은 Network 1과 통신하고, 오른쪽(NAP2와 Physical 부분)은 Network 2와 통신한다.

Host A에서는 계층을 내려가며 헤더를 붙여 Network1로 보내고, Network 1에서는 Router로 보낸다.

Router에서는 Network1에서 온 data가 Network2에서 인지하게 하기 위해 왼쪽 부분에서 Network 1에서 Data를 받아 헤더를 모두 떼어내고, 오른쪽 부분에서 Network 2에 맞는 헤더를 붙여준다.

Host B에서는 Host A의 각 계층에서 붙인 헤더를 각각의 계층에서 떼어내고 최종적으로 User data가 사용자에게 전달된다.

Transport layer와 Application layer은 Host에만 존재하며, Router에는 그것을 제외한 3개의 계층이 존재한다. 또한 TL에서 Application layer을 찾아가기 위한 주소를 Port 또는 SAP(Service Access Point)라고 한다.

(4) PDU

어떤 data가 destination을 찾아가기 위해서는 address가 필요한데, addressing에는 두가지 level이 있다.

  • Network level address : network 상의 computer가 다른 computer을 찾기 위해서는 각각의 host(computer)가 Unique한 global internet address를 사용해야 한다. (ex : Computer A가 Computer C를 찾기 위한 주소)

  • Process within the system : 각각의 application(process)이 host(computer) 내에서 unique한 address(port)를 가진다. (ex : Computer C의 TCP계층에서 application 계층의 2번 application을 찾아가기 위한 주소(port))

PDU는 각각의 계층마다 다르게 부른다. 상위 계층에서 내려온 data를 Pay load라고 하며, 윗 계층에서 내려온 PDU는 아랫 계층에서는 하나의 data로 인지한다. (header와 pay load를 구분하지 못한다.) 추가로, Network Access layer에서는 FCS라는 정보를 더 붙인다.


3. TCP, UDP

Internet에서는 Transport Layer에서 두 개의 Protocol(TCP/IP)을 지원한다.

(1) TCP

TCP(Transmission Control Protocol)는 application 사이에서 정보 제공을 위한 reliable connection을 제공한다. 여기서 connection은 다른 시스템 내에 있는 두 entity 사이의 통신하는 기간 동안만 임시로 만들어지는 논리적 연결을 말한다.

TCP에서의 PDU를 TCP segment라고 하며, source와 detination의 port를 포함하여 사용자(application)을 식별해서 찾아가게끔 한다. 각각의 entity가 연결되어 있는 동안에는 TCP segment를 추적하여 flow를 통제하며, 정보 누락이나 damage를 복구한다.

TCP는 SMTP(Simple Mail Transfer Protocol), FTP(File Transfer Protocol), Telnet 등 대부분의 app에서 사용한다.

TCP의 헤더는 20octat이다. (1octat = 8bit)

(2) UDP

UDP(User Datagram Protocol)는 TCP와는 달리 reliable delivery를 보장하지 않는다. 순서, 중복을 신경쓰지 않고 overhead를 줄여 전송 시간을 줄이는 데에만 초점을 맞춘다.

IP와 port addressing을 사용하며, 사용되는 application에는 SNMP(Simple Network Management Protocol)가 있다. SNMP는 Network Management System(NMS)에서 Client가 작동을 잘 하는지 Server가 확인하기 위해 주기적으로 정보를 주고받을 때 사용된다.


참고
https://www.cloudflare.com/ko-kr/learning/ddos/glossary/open-systems-interconnection-model-osi/
https://inpa.tistory.com/entry/WEB-%F0%9F%8C%90-OSI-7%EA%B3%84%EC%B8%B5-%EC%A0%95%EB%A6%AC

profile
척척학사가 되고 싶은 똘맹

0개의 댓글