HTTP 웹/Http 웹 기본

(2) 인터넷 통신 - IP / TCP,UDP / PORT

코르시카 2021. 6. 13. 21:26

1. 인터넷 통신

복잡한 인터넷 망을 통해 두대의 컴퓨터가 연결됨

이러한 통신을 하기 위한 규약이 있고 이가 IP(Internet Protocol) 임

 

1-1) IP (internet protocol)

통신하기 위한 규약의 총칭

통신규약을 따르는 통신 과정은 다음의 일련의 process를 거친다

(a) 두대의 컴퓨터 모두 ip 주소가 있어야 함

(b) 클라이언트(computer 1) IP 패킷 이라는 통신 단위로 데이터 전달

> 다음과 같이 패킷에 대한 정보를 추가로 기술해주어야 함

> 노드를 연결하는 서버들 끼리 규약을 따르기 때문에 최종 서버로 전달 될 수 있음

(c) 서버(computer 2) 마찬가지로 답장 전달(반드시 응답 해야 함)

 

 

1-2) IP 프로토콜의 한계

  • 비연결성
    - 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송 (ex PC 다운)
  • 비신뢰성
    - 중간에 패킷이 사라지면?
        → 모종의 이유로 lan이 끊기거나 node가 다운
    - 패킷이 순서대로 도착하지 않으면 (동기 동작 아니므로 - 어떤 route로 갈지 모름)
        → 큰 패킷의 경우 보통 1500 byte로 끊는데 순서대로 도착하지 않을 수 있음

  • 프로그램 구분
    - 같은 ip를 사용하는 서버에서 통신하는 어플리케이션(응용프로그램)이 둘 이상이라면?
      (ex 게임과 online music player 같이 사용하는 경우?)
  • 문제 해결
    - TCP / UDP 사용!

 

 

2. TCP / UDP

2-1) 정의

IP 프로토콜만의 한계를 극복하기 위한 계층 중 하나

[계층 추가 설명▼]

더보기

물데네전세표응

  • 물리, 데이터링크, 네트워크, 전송, 세션, 표현, 응용
  • 4 / 5 / 7 계층 등으로 나누는 경우가 있음
  • 7 계층으로 나누는 이유
    - 통신이 일어나는 과정을 단계별로 알 수 있음
    -  때문에 그 단계만 수정하는 등 분리가 잘 되므로
  • 응용 → 물리 혹은 물리 → 응용 계층으로 갈때 각 단계에서 헤더를 추가하는 Encapsulation 과정을 거치게 됨
  • 수신 과정에선 Decapsulation으로 헤더를 하나씩 제거

  1. 물리
    • 리피터, 케이블, 허브 등
      - 데이터 / 전기 신호로 변화되어서 주고받는 물리적 계층
      - 데이터를 전기적으로 전송하는 역할만 담당
      - 0 / 1 로 이루어진 전기신호 데이터
  2. 데이터 링크
    • 브릿지, 스위치 등
      - 물리 계층으로 송수신 되는 정보를 관리하여 안전하게 전달되도록 도와주는 역할(오류/흐름을 관리)
      - 이 계층에서의 데이터 단위를 Frame이라고 칭함
      - Mac 주소를 통해 통신. 프레임에 Mac 주소를 부여하고, 에러검출, 재전송, 흐름제어 등을 진행
      - 하드웨어에 대한 주소개념(랜카드에 고유 맥 주소 존재)
        아이피주소에서 맥주소로 변환되는 과정도 있음
        Point to Point 데이터 전송
        (추가 참조 : link)
  3. 네트워크
    • 라우터, IP
      - 데이터를 목적지 까지 가장 안전하고 빠르게 전달(최적의 경로를 설정한다는 것)
      - 라우터를 통해 이동경로 결정하여 IP 주소를 지정, 해당 경로를 따라 패킷을 전달
        라우팅, 흐름제어, 오류제어, 세그먼테이션 등을 수행
      - 이 부분에서 사용되는 데이터 단위를 "패킷"이라고 함
      - IP는 통신 규약의 총칭
  4. 전송
    • TCP, UDP
      - TCP와 UDP 프로토콜을 통해 통신을 활성화
        포트를 열어두고 응용 프로그램 / 어플리케이션이 패킷을 전송할 수 있도록 제공
      - (a) TCP : 신뢰성, 연결지향적
        (b) UDP : 비신뢰성, 비연결성, 실시간
    • 기본 기능
      - 오류 검출 및 복구, 흐름제어, 중복 검사
         → 3 way handshake / 4 way handshake 등 사용하여 검증
    • 사용되는 기능
      - Port 번호 사용
      - 이 부분에서 사용되는 데이터 단위를 "Segment" 라고 함
  5. 세션
    • API, Socket
      - 데이터가 통신하기 위한 논리적 연결을 담당
         TCP / IP 세션을 만들고 없애는 책임 (OS 에서 담당하는 것일 듯?)
  6. 표현
    • JPEG, MPEG 등
      - 받은 Segment를 표현으로 Mapping하는 곳
      - 데이터 표현에 대한 독립성을 제공(네트워크에 종속적이지 않고 사용자에 맞는 데이터화)
      - 데이터 암호화 / 복호화의 역할
        파일 인코딩, 명령어 포장, 압축, 암호화 등
  7. 응용
    • Http, ftp, dns 등
      - 최종 목적지
      - 응용 프로그램 / 프로세스 / 어플리케이션 와 직접 관계하여 일반적인 응용 서비스를 수행
      - 사용자 interface(패킷에 대한), 전자우편, 데이터베이스 관리 등의 서비스를 clinet가 이용 가능

 

2-2) IP Stack

a) 프로그램 관점

b) 하드웨어 관점

메세지 프로그램을 예를 들면 위와 같이 동작하여 internet 상에 뿌려지게 됨

※ Ethernet Frame 은 lan card에 등록된 MAC 주소 등이 포함된 것

c) 전송되는 결과물

> 위의 HTTP / TCP / IP / Ethernet frame 그림의 일부분

※ 전송제어, 순서, 검증 정보 등이 포함되어있기 때문에 2-4) 번의 http 결점 보완이 가능!!

 

2-3) TCP 계층 특징

a) 정의

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

b) 특징

  • 연결지향 - TCP 3 way handshake (가상 연결)
  • 데이터 전달 보증
  • 순서 보장
  • 신뢰할 수 있는 프로토콜
  • 현재 대부분 TCP 사용

 

2-4) TCP 3 way handshake

(a) HTTP 결점 보완 - 서버 동작여부

  1. 서비스 불능시 패킷 전송 : 신뢰성 syn으로 connect 체크
  2. ack 2번으로 신뢰성 up (요즘은 server ack에 같이 데이터 첨부해서 보냄)
  3. 물리적 연결이 아니라 논리적으로 연결되었다고 "가정"하는 것에 가까움
    → 실질적으로 전용 lan선을 direct 하게 꽃는게 아니라서

(b) HTTP 결점 보완 - 데이터 전달 보증

아마도 3 way 비슷하게 매번 전송시 체크하는 듯

(c) HTTP 결점 보완 - 순서 보장

드라이버등에서 받은 데이터 순서를 최적하 하는 방식도 있고

missing 된 데이터 시점부터 다시 보내라고 하는 방식이 있음

 

2-5) UDP 계층 특징

a) 정의

IP와 거의 동일함

PORT + Checksum 정도만 추가

※ checksum : 메세지 검증 기능

b) UDP 사용 이유

- TCP는 3 way handshake 등을 사용하고 있기 때문에 더 빠른 동작이 불가능

- UDP는 application level에서 추가 가능만을 구현하면 됨

   → 최근 UDP 뜨고 있음

       더욱더 빠른 최적화를 위해

 

 

3. Port의 기능

PC는 하나의 IP만 할당되어있음

Application들이 하나의 ip안에서 구분하려고 사용할 때 IP뒤에 Port를 사용


참조

섹션 : 인터넷 네트워크

https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard

 

모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의

실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., 웹 기술을 사용하는 개발자라면 누구나 OK!꼭 필요한 HTTP의 핵심을 알려드립니다. 📣 확인해주세요!본 강의는 자바 스

www.inflearn.com

 

반응형