티스토리 뷰

 TCP/IP

1. 네트워크의 시작

인터넷 프로토콜, 즉 IP기반의 네트워크는 아르파넷(ARPANET)프로젝트에서 시작되었다.

기존에 사용되었던 회선교환 방식이 아닌 패킷교환 방식으로 네트워크를 구축하게 되었다.

→ 이를 토대로 현재의 인터넷 통신 방식의 기반이 세워졌다.

📞 회선교환 방식

발신자와 수신자 사이에 데이터를 전송할 전용선을 미리 할당하고 둘을 연결한다.

연결하고 싶은 상대가 다른 상대와 연결중인 경우, 상대방은 이미 다른 상대와의 전용선과 연결되어있다.

→ 연결이 끊어지고 나서야 상대방과 연결이 가능하다.

특정 회선이 끊어지는 경우 처음부터 다시 연결을 성립해야 한다.

➡︎ 회선교환 방식은 즉시성이 떨어진다는 비효율을 가진다.

📦 패킷교환 방식

패킷이라는 단위로 데이터를 잘게 나누어 전송하는 방식

각 패킷에는 출발지와 목적지 정보가 있어 패킷이 목적지를 향해 가장 효율적인 방식으로 이동할 수 있다.

→ 특정 회선이 전용선으로 할당되지 않기 때문에 빠르고 효율적으로 데이터를 전송할 수 있다.

➡︎ 인터넷 프로토콜(IP)은 출발지와 목적지의 정보를 IP 주소라는 특정 숫자값으로 표기하고 패킷단위로 데이터를 전송한다.


2. IP/ IP Packet

클라이언트의 요청이 서버로 무사히 전달되기 위해서 어떤 규칙이 필요할까?

IP 주소를 컴퓨터에 부여하여 이를 이용해 통신한다.

  • IP는 지정한 IP 주소에 패킷(Packet)이라는 통신 단위로 데이터를 전달
더보기

➰ IP 패킷이란?

패킷은 pack과 bucket이 합쳐진 단어로 소포와 비슷한 의미를 가진다.

IP 패킷은 이를 데이터 통신에 적용한 것으로 출발지 IP, 목적지 IP와 같은 데이터 전송에 필요한 정보가 포함되어 있다.

  • 패킷 단위로 전송하면 노드들은 목적지 IP에 도달하기 위해 서로 데이터를 전달한다.

→ 복잡한 인터넷 망 사이에서 정확한 목적지로 패킷을 전송할 수 있다.

서버도 데이터를 전송받으면 이에 대한 응답을 돌려줘야 한다.

서버 역시 IP 패킷을 이용해 클라이언트에 응답을 전달한다.

하지만 IP에도 한계는 존재한다.

비연결성

  • 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송
  • (서버의 상태를 파악할 방법이 없기 때문)

비신뢰성

  • 중간에 패킷이 사라질 수 있음
    • 클라이언트가 파악할 방법이 없기 때문)
  • 패킷의 순서를 보장할 수 없음
    • 전달 데이터의 용량이 클 경우 패킷 단위로 나눠 데이터를 전달하기 때문에 중간에 서로 다른 노드를 통해 전달될 수 있다.

3. TCP/ UDP

IP 패킷의 한계점을 보완한다.

네트워크 프로토콜 계층은 OSI 7계층과 TCP/ IP 4계층으로 나뉜다.

  • TCP프로토콜이 IP 프로토콜 보다 더 높은 계층에 존재하므로 IP 프로토콜의 한계를 보완할 수 있다.

 

📩 채팅 프로그램에서 메세지는 보내는 경우

  1. HTTP 메세지가 생성되면 Socket을 통해 전달됨
    • Socket : 네트워크 환경에 연결할 수 있게 만들어진 연결부
  2. IP 패킷 생선 전 TCP 세그먼트를 생성
  3. TCP/IP 패킷은 LAN카드와 같은 물리적 계층을 지나기 위해 이더넷 프레임 워크에 포함되어 서버로 전송됨

 

 

📦 TCP / IP 패킷

  • TCP 세그먼트에는 IP 패킷의 출발지 IP와 목적지 IP 정보를 보완할 수 있는 출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보 등을 포함한다.

TCP(Transmission Control Protocol)

전송 제어 프로토콜
  • 같은 계층에 속한 UDP에 비해 상대적으로 신뢰할 수 있는 프로토콜
  • 특징
    • 연결 지향형- TCP 3 way handshake (가상 연결)

  1. 클라이언트는 서버에 접속을 요청하는 SYN패킷을 보냄
  2. 서버는 SYN요청을 받고 요청을 수락한다는 ACK와 SYN이 설정된 패킷을 발송, 클라이언트로부터의 ACK응답을 기다림
  3. 클라이언트가 서버에 ACK을 보내면 연결이 성립되어 데이터를 전송할 수 있음

 

서버가 꺼져있는 경우 SYN을 보낸 후 응답이 없으므로 데이터를 보내지 않는다.

SYN은 Synchronize, ACK는 Acknowledgment의 약자

( 현재는 최적화가 이루어져 3번 ACK을 보낼때 데이터를 함께 보내기도함 )

 

    • 데이터 전달 보증
      • 데이터 전송이 성공적으로 이루어진 경우에만 응답을 돌려주기 때문
    • 순서 보장
      • 패킷이 순서대로 도착하지 않는 경우 TCP 세그먼트에 있는 정보를 토대로 다시 패킷 전송을 요청할 수 있음
    • 신뢰할 수 있는 프로토콜

 

UDP (User Datagram Protocol)

사용자 데이터그램 프로토콜
  • IP에 PORT, 체크섬 필드 정보만 추가된 단순한 프로토콜
    • 체크섬(checksum) : 중복 검사의 한 형태로, 오류 정정을 통해, 공간(전자 통신)이나 시간(기억 장치) 속에서 송신된 자료의 무결성을 보호하는 단순한 방법.
  • TCP 보다 신뢰성은 낮지만 3 wat handshake 방식을 사용하지 않아 속도는 더 빠르다. → 비 연결지향
  • 데이터 전달 보증 X , 순서 보장 X
  • HTTP3는 UDP를 사용한다.
  • TCP보다는 기능이 거의 없어 하얀 도화지처럼 커스터마이징이 가능하다.
  • 신뢰성보다는 연속성이 중요한 서비스에 자주 사용된다.
    • 실시간 스트리밍

TCP vs UDP

TCP UDP
연결지향형 프로토콜 비 연결지향형 프로토콜
전송 순서 보장 전송 순서 보장 X
데이터 수신 여부 확인함 데이터 수신 여부 확인하지 않음
신뢰성 높지만 속도 느림 신뢰성 낮지만 속도 빠름

 


🌐 네트워크 계층 모델

1. OSI 7 계층 모델

ISO 국제 표준화 기구에서 제정한 표준 규격

예전엔 같은 회사에서 만든 컴퓨터끼리만 통신이 가능했기 때문에 다른 회사의 시스템이라도 네트워크 유형에 관계없이 상호 통신이 가능한 규약, 즉 프로토콜이 필요했다. 그래서 ISO에서는 제조사에 상관없이 공통으로 사용할 수 있는 네트워크 표준 규격을 정의했다.

 

 

더보기
📍 네트워크를 이루고 있는 구성요소들을 7단계로 나누고, 각 계층의 표준을 정함

📍 표준화를 통해 포트, 프로토콜의 호환 문제를 해결, 네트워크 시스템에서 일어나는 일을 해당 계층 모델을 이용해 쉽게 설명 가능

📍 네트워크 관리자가 문제가 발생한 경우 물리적 문제인지, 응용 프로그램과 관련이 있는지 등 원인을 파악할 수 있음

 

 

➰ 7 계층

1계층 - 물리 계층

더보기

OSI 모델의 맨 밑에 있는 계층.

시스템 간의 물리적인 연결과 전기 신호를 변환 및 제어하는 계층으로 주로 물리적인 연결과 관련된 정보를 정의한다.

전기 신호를 전달하는데 초점을 두고, 들어온 전기 신호를 그대로 잘 전달하는 것이 목적

디지털 또는 아날로그로 신호 변경

2계층 - 데이터링크 계층

더보기

네트워크 기기 간의 데이터 전송 및 물리주소(MAC주소 등)를 결정하는 계층.

물리 계층에서 들어온 전기 신호를 모아 알아 볼 수 있는 데이터 형태로 처리한다.

주소 정보를 정의하고 출발지와 도착지 주소를 확인한 후 데이터 처리를 수행

브리지 및 스위치, MAC 주소

3계층 - 네트워크 계층

더보기

OSI 7 계층에서 가장 복잡한 계층 중 하나로서 실제 네트워크 간에 데이터 라우팅을 담당.

➰ 라우팅 : 네트워크 안에서 통신 데이터를 짜여진 알고리즘에 의해 최대한 빠르게 보낼 최적의 경로를 선택하는 과정

IP 패킷 전송

4계층 - 전송 계층

더보기

컴퓨터간 신뢰성 있는 데이터를 서로 주고받을 수 있도록 하는 서비스를 제공하는 계층.

하위 계층에서 보낸 데이터들이 실제 정상적으로 보내지는지 확인하는 역할을 한다.

네트워크 계층에서 사용되는 패킷이 유실되거나 순서가 바뀌는 경우 바로잡아주는 역할을 담당

TCP/ UDP 연결

5계층 - 세션 계층

더보기

세션 연결의 설정과 해제, 세션 메세지 전송 등의 기능을 수행하는 계층.

컴퓨터간의 통신 방식에 대해 결정하는 계층으로 양 끝 단의 프로세스가 연결을 성립하도록 도와주고, 작업을 마친 후에는 연결을 끊는 역할을 한다.

6계층 - 표현 계층

더보기

응용 계층으로 전달하거나 전달받는 데이터를 인코딩 또는 디코딩하는 계층.

번역기 같은 역할을 수행

문자 코드, 압축, 암호화 등의 데이터 변환

7계층 - 응용 계층

더보기

최종적으로 사용자와의 인터페이스를 제공하는 계층.

사용자가 실행하는 응용 프로그램(구글, 크롬 등)이 해당 계층에 속한다.

이메일 및 파일 전송, 웹 사이트 조회

HTTP, DNS, SSL ...

 

💊 데이터 캡슐화

OIS 7계층 모델은 송신 측의 7계층과 수신 측의 7계층을 통해 데이터를 주고 받는다.

각 계층은 독립적이기 때문에 데이터가 전달되는 동안 다른 계층의 영향을 받지 않는다.

  • 송신자는 데이터를 보내기 위해 상위 계층에서 하위 계층으로 데이터를 전달한다.
    • 데이터를 상대방에게 보낼 때 각 계층에서 필요한 정보를 데이터에 추가함
      • 이 정보를 헤더(데이터링크 계층에서는 트레일러)라고 부르며 헤더를 붙여나가는 것을 캡슐화라고 함
    • 마지막 물리 계층에 도달하며 송신 측의 데이터링크 계층에서 만들어진 데이터가 전기 신호로 변환되어 수신 측에 전송된다.
  • 수신자는 하위 계층에서 상위 계층으로 데이터를 전달받는다.
    • 상위 계층으로 데이터를 전달하며 각 계층에서 헤더를 제거해 나가는 것을 역캡슐화라고 함
    • 역캡슐화를 거쳐 마지막 응용 계층에 도달하면 원본 데이터만 남음

2. TCP/ IP 4 계층 모델

OSI 모델을 기반으로 실무적으로 이용할 수 있도록 현실에 맞춰 단순화된 모델

실용성에 기반을 둔 현대의 인터넷 표준

➰ 4 계층

4계층 : 어플리케이션 계층

OSI 계층의 세션 계층, 표현 계층, 응용 계층에 해당하며 TCP/ UDP기반의 응용 프로그램을 구현할 때 사용

  • FTP, HTTP, SSH

3계층 : 전송 계층

OSI 계층의 전송 계층에 해당하며 통신 노드 간의 연결을 제어하고, 신뢰성 있는 데이터 전송을 담당

  • TCP/ UDP

2 계층 : 인터넷 계층

OSI 계층의 네트워크 계층에 해당하며 통신 노드 간의 IP 패킷을 전송하는 기능 및 라우팅을 담당

  • IP, ARP, RSRP

1 계층 : 네트워크 인터페이스 계층

OSI 계층의 물리 계층과 데이터 링크 계층에 해당하며 물리적인 주소로 MAC을 사용

  • LAN, 패킷망 등에 사용됨

 

⚙️ 응용 계층

네트워크 모델의 최상위 계층으로 최종적으로 사용자와의 인터페이스를 제공하는 계층
  • 응용 계층은 애플리케이션에 대한 서비스를 사용자에게 제공하는 계층
    • 이메일, 파일 전송, 웹 사이트 조회 등
  • 애플리케이션은 두 가지로 분류된다.

 

  • 서비스를 요청하는 사용자 측 → 클라이언트
    • 웹 브라우저, 메일 프로그램
  • 서비스를 제공하는 측 → 서버
    • 웹 서버 프로그램, 메일 서버 프로그램

➡︎ 클라이언트와 서버 모두 응용 계층에서 동작한다.

 

 

  •  
728x90

'코딩 > 코드스테이츠' 카테고리의 다른 글

[인증 / 보안] - Token  (0) 2023.03.08
[인증 / 보안] - Cookie/Session  (0) 2023.03.07
[사용자 친화 웹] - 접근성  (0) 2023.03.02
[사용자 친화 웹] - 웹 표준  (0) 2023.02.28
[Redux] - Cmarket Redux  (0) 2023.02.27