network 4

bells!·2024년 10월 21일

네트워크

목록 보기
6/8

계층순서
application -> trasport -> network -> data link -> physical
application : SMTP, DNS, HTTP
application <-> transport : TCP/UDP
network -> data link : 큐잉지연 발생 자주 하는 곳(확인 필요)

트랜스포트계층서비스

네트워크 계층 서비스 (간단히 알아보고, transport 계층으로!)

호스트(host)간의 통신

  • 인터넷 호스트간에 패킷(datagram) 전달
  • 호스트의 인터넷 통신 장치 : NIC(Network Interface Card)

최선형(best-effort) 서비스

  • 자원이 허락하는 범위 내에서 최적의 통신 서비스 제공
  • 자원이 부족한 경우, 지연시간 발생, 패킷 훼손/손실 발생 가능 : 비신뢰 서비스(unreliable service)

비연결성(connectionless) 서비스

  • 패킷 전달 경로가 다를 수 있음.
  • 패킷 도착 순서가 바뀔 수 있음.

IP(Internet Protocol)

  • IP 주소 기반의 패킷(datagram) 전달
  • IP 주소 : 인터넷에 연결된 NIC(호스트) 구분

트랜스포트 계층 서비스

위의 network계층의 서비스를 이용해서, transport 계층 정의.
정의된 transport 계층을 기반으로, application 계층 정의.

  • 하나의 transport계층에서는 여러 network 계층이 있을 수 있어!

정리) 어플리케이션끼리 통신 -> 트랜스포트로 요청이 내려와. -> 트랜스포트에서 세그멘테이션, 리어셈블리, 다중화, 역다중화 작업 실행 -> network 계층으로 이동(여러개 존재 가능) -> IP통신으로 주소 지정 -> packet이라는 data gram단위로 짤라내. -> data link 로 이동

조금 세부) application 계층에서 응용 프로세스가 통신을 위해 메시지를 생성 (메시지를 transport 계층으로 전달.) -> transport 계층은 메시지를 적절한 크기로 세그멘테이션하고, 각 세그먼트에 포트 번호를 부여.(한 application process가 여러개의 segment가 된 경우, 모두 동일한 port number를 갖게 된다.) 이후 다중화를 통해 여러 응용 프로세스의 데이터를 하나의 연결로 통합 (세그먼트는 네트워크 계층으로 전달) -> 네트워크 계층은 세그먼트에 IP 헤더를 추가하여 패킷을 생성. IP 주소를 사용하여 패킷의 출발지와 목적지를 지정하고, 패킷이 네트워크를 통해 올바른 경로로 전달 -> 패킷은 데이터 링크 계층으로 전달. 데이터 링크 계층은 패킷에 데이터 링크 헤더와 트레일러를 추가하여 프레임을 생성. -> MAC 주소를 사용하여 물리적으로 연결된 장치 간의 통신을 관리합니다. 프레임은 물리 계층을 통해 실제 전송 매체로 전달되어 수신 측으로 전송됩니다.


트랜스포트 계층 서비스 (application으로부터 정보 받아온 다음, 트랜스포트에서 밑의 과정 실행하고, network/application으로 넘겨줌.)

  1. segmentation / reassembly
  • 응용 프로세스가 전송 요구하는 메시지를 네트워크 계층이 교환 가능한 크기의 단위(segment)로 나누어, 네트워크 계층에 전달
  • 네트워크 계층을 통해 수신되는 세그먼트들을 메세지로 재조합하여, application 프로세스에게 전달
  1. multiplexing / demultiplexing
  • 다수의 응용 프로세스가 전송 요구하는 메세지를 구분 가능한 정보를 추가한 segment로 만들어 network 계층에 전달 : Port number :: multiplexing
  • network 계층을 통해 수신되는 segment의 port number를 사용하여, 메세지를 전달할 application process 선택

port number : 어느 application process에서 왔는지, 최종 목적지가 어디인지에 대한 정보를 갖고 있다.

  1. 무결성(Integrity) 확인
  • 수신 segment bit의 손상 여부 확인
  • checksum 기술 적용
  1. 신뢰 전송(Reliable transfer)
  • 오류 복구(error recovery): 손상 또는 손실 segment 복구
  • 흐름 제어(flow control): 수신 buffer overflow 방지
  1. 혼잡 제어(congestion control)
  • 전송량 조절을 통해 네트워크 혼잡 상황 회피 및 해소송량 조절을 통해 네트워크 혼잡 상황 회피 및 해소

다중화 : client application process들을 transport에서 port번호를 부여해서, 네트워크 계층으로 보내는 것 (여러개 가 input되고, network계층으로 하나가 나가니, 다중화라 한다.)

  • 정리하자면, application process는 port번호를 사용해서 구분해준다. 그 port번호를 사용해서, application process 구분해서, 각각을 전달해주는 역할을 하는 계층이 transport이고, 이를 다중화라 하고, 반대를 역다중화라고 한다.

  • IP주소 + PORT 번호 주어지면, 인터넷 통신의 모든 application process를 구분할 수 있다.

  • IP주소 : NIC(network interface card)의 종류를 구분하기 위한 것


흐름) 송신 측:
애플리케이션 계층: 데이터 생성 →
전송 계층: 세그멘테이션, 다중화 →
네트워크 계층: IP 패킷화 →
데이터 링크 계층: 프레임화 →
물리 계층: 비트 전송
수신 측:
물리 계층: 비트 수신 →
데이터 링크 계층: 프레임 재구성 →
네트워크 계층: 패킷 추출 →
전송 계층: 세그먼트 재조립, 역다중화 →

추가 설명!
애플리케이션 프로세스 간의 통신
애플리케이션 계층에서 실행되는 두 개의 애플리케이션 프로세스가 서로 통신할 때, 전송 계층이 이 통신을 지원하고 관리합니다. 이 과정은 다음과 같이 이루어집니다:
1. 애플리케이션 프로세스의 데이터 생성:
예를 들어, 웹 브라우저(클라이언트)가 웹 서버에 HTTP 요청을 보냅니다.
3. 애플리케이션 계층 → 전송 계층:
클라이언트의 웹 브라우저는 HTTP 프로토콜을 사용하여 데이터를 생성하고, 전송 계층으로 전달합니다. 이때 소켓 API를 통해 TCP 또는 UDP를 선택하여 데이터를 전송합니다. 대부분의 웹 통신은 TCP를 사용합니다.
3. 전송 계층 → 네트워크 계층:
전송 계층은 데이터를 TCP 세그먼트로 분할하고, 네트워크 계층(IP)을 통해 패킷으로 캡슐화하여 전송합니다.
4. 네트워크 계층 → 데이터 링크 계층 → 물리 계층:
패킷은 데이터 링크 계층과 물리 계층을 통해 실제 네트워크 매체(케이블, 무선 등)를 통해 전송됩니다.
5. 수신 측에서의 역과정:
서버 측의 물리 계층에서 패킷을 수신하고, 데이터 링크 계층과 네트워크 계층을 거쳐 전송 계층으로 전달됩니다.
6. 전송 계층은 TCP 세그먼트를 재조립하고, 애플리케이션 계층으로 데이터를 전달합니다.
7. 애플리케이션 계층에서 데이터 처리:
서버의 애플리케이션 프로세스(웹 서버)는 수신한 HTTP 요청을 처리하고, 응답을 생성하여 다시 전송합니다.

트랜스포트 다중화/역다중화

segment에 port number 붙인 것이 datagram의 data 부분에 encapuslation되어 전달됨.

  • 소켓(socket)
    - transport 계층이 제공하는 application 통신 통로 자료구조
    • application process address : socket address (IP address + port number)
  • 다중화 유형
    - 연결형(connection-oriented) : 통신 socket 간에 1:1 논리적 연결 설정
    • 비연결형(connectionless) : 통신 socket간에 1:1 논리적 연결 미설정

UDP 예시 (DNS 요청)
클라이언트:
임시 출발지 포트 번호(예: 50000번)를 사용하여 DNS 서버의 포트 번호 53번으로 요청을 보냅니다.
DNS 서버:
목적지 포트 번호 53번으로 수신된 요청을 처리하고, 응답을 보낼 때 클라이언트의 출발지 포트 번호 50000번을 목적지 포트로 사용합니다.
소켓 식별:

서버는 (서버 IP, 포트 53번) 소켓으로 요청을 수신합니다.
TCP 예시 (웹 브라우징)
클라이언트:
임시 출발지 포트 번호(예: 50000번)를 사용하여 웹 서버의 포트 번호 80번으로 연결을 요청합니다.
웹 서버:
출발지 IP와 포트 번호를 확인하여 해당 클라이언트와의 연결을 생성합니다.
소켓 식별:

서버는 각 클라이언트와의 연결을 (클라이언트 IP, 클라이언트 포트, 서버 IP, 포트 80번)으로 식별합니다.
따라서 여러 클라이언트가 동시에 서버의 포트 80번에 연결하더라도 각 연결을 구분할 수 있습니다.

profile
bell!

0개의 댓글