01. 인터넷은 어떻게 동작하는가

jiseung·2022년 4월 21일
135

Frontend-Roadmap

목록 보기
1/3
post-thumbnail

인터넷과 웹

인터넷과 웹의 관계

인터넷은 세상에서 가장 인기있는 컴퓨터 네트워크다.

많은 사람들은 웹 브라우저를 사용해 인터넷 콘텐츠에 접근할 수 있다.
이러한 웹의 대중성 때문에 인터넷 === 웹이라고 생각하곤 하는데,
실제로 인터넷 응용 프로그램의 하나이다.

인터넷이 운영체제라면, 웹은 그 위에서 동작하는 애플리케이션이라고 비유할 수 있겠다.

인터넷과 웹의 역사

1960년대에 인터넷이 등장하고, 1990년대에 이 등장했다.

  1. 인터넷
  • 전세계 컴퓨터들이 연결되어
    파일(데이터)을 주고 받는 거대한 네트워크
  • 인터넷을 활용해서 HTML이라는 프로그램 언어로 만들어진 웹 페이지를 주고 받을 수 있도록
    팀버너스리가 처음 고안한 서비스
  • 웹은 누구나 사용할 수 있도록 public domain 이라는 라이선스로 공개되었다.

팀버너스리는 컴퓨터 사이에 정보를 주고 받기 위해 최초로 웹 브라우저웹 서버를 개발했다.

웹 브라우저웹 서버 사이에서 사용되는 통신 규약을 HTTP라고 한다.
그 과정에서 웹 페이지의 정보를 담고 있는 언어가 HTML이다.

인터넷은 무엇인가

인터넷의 핵심

인터넷에는 세 가지 핵심 부분이 있다. 한번 읽어보자

  1. The Last Mile
  • 가정과 작은 기업들의 인터넷 연결
  • 통신사가 제공하는 광케이블 인터넷, 무선 인터넷 서비스
  1. Data Centers
  • 구글, 페이스북 등의 대기업이 소유하는 시설
  • 사용자의 데이터를 저장하고 온라인 앱과 콘텐츠를 호스트하는 서버들의 센터
  • 연결 속도가 빨라 많은 사용자에게 동시 서비스를 제공할 수 있다.
  • 땅 값과 전기 요금이 저렴한 지역에 위치하는 경우가 많다.
  1. The BackBone
  • 데이터 센터와 사용자 간에 데이터를 전송하는 장거리 네트워크

인터넷의 역사

최초의 네트워크는 ARPANET에 의해 시작되었고, 이때 디자인된 TCP/IP는 현대 인터넷의 기초가 되었다.

No one runs the internet.

인터넷분산 네트워크의 네트워크이다.
기관은 자체 네트워크를 운영하고, 상호 연결을 기반으로 서로 트래픽을 교환한다.

IETF(Internet Engineering Task Force)

인터넷이 작동하도록 하는 공유 기술 표준은 IETF에서 관리하며,
IETF는 누구나 참석하고 제안할 수 있는 개방형 조직이다.

ICANN (Internet Corporation for Assigned Names and Numbers)

ICANN는 도메인 이름과 IP 주소 배포를 담당하지만,
누가 인터넷에 연결할지 어떤 종류의 데이터를 보내는 지 제어하는 것은 아니다.

무선 인터넷은 어떻게 작동할까?

초기 인터넷 엑세스는 물리적 케이블(보통 이더넷 케이블)을 통해 이루어졌다.
최근에는 무선 인터넷 엑세스가 보편화되었다.

무선 인터넷 엑세스의 종류

  1. Wi-Fi 네트워크
  • 비교적 간단하다.
  • 누구나 장비를 구입해 인터넷 엑세스를 제공할 수 있다.
  • 서로 간섭하는 것을 방지하기 위해 네트워크의 전력 및 범위에 제한이 있다.
  • unlicensed spectrum : 누구나 무료로 사용하도록 할 수 있다.
  1. 셀룰러 네트워크
  • 보다 중앙 집중화 되어있다.
  • 서비스 영역을 로 나누는 방식으로 작동한다.
  • 셀의 중앙마다 서비스를 제공하는 타워가 있다.
  • 장치가 다른 셀로 이동할 때, 네트워크는 자동으로 장치를 다른 타워로 넘겨주어 사용자가 중단 없이 통신을 지속할 수 있게 한다.
  • licensed spectrum : 독점적 사용. 일반적으로 경매로 낙찰된다.

클라우드는 무엇일까?

2000년대 초반에 대중화된 컴퓨팅 접근 방식
서버에 파일을 저장하고 인터넷을 통해 서버를 소프트웨어에 제공함으로써
사용자에게 간단하고 안정적인 컴퓨팅 경험을 제공한다.

  1. Google docs
    Google 서버에 저장된 문서를 모든 컴퓨터에서 사용할 수 있다.

  2. GmailHotmail, Dropbox, AppleiCloud
    파일을 가지고 다지니 않아도 되는 클라우드 컴퓨팅 서비스

  3. Amazon Web Services
    자체 서버를 구매하고 운영하지 않아도 된다. 시간당 서버를 임대할 수 있다.
    웹사이트 생성을 위한 낮은 진입 장벽. 빠르게 용량을 확장할 수 있다.

패킷이란 무엇일까?

패킷 : 인터넷을 통해 전송되는 정보의 기본 단위
정보를 작게 분할하면 네트워크 용량을 보다 효율적으로 사용할 수 있다.

패킷의 핵심 부분

  1. 헤더
    패킷의 길이, 소스대상, 체크섬(전송중 패킷 손상 감지) 등을 포함해 패킷이 대상에 도달하는 데 도움이 되는 정보가 포함되어 있다.

  2. 실제 데이터

  • 헤더가 전송되고 나서 실제 데이터가 오는데, 최대 64KB의 데이터(일반 텍스트 20페이지)가 포함될 수 있다.

인터넷 라우터에 문제가 발생하면 패킷을 폐기함으로써 처리할 수 있다.
이러한 방식은 인터넷의 핵심 인프라를 단순화해 낮은 비용으로 높은 성능을 제공한다.

월드 와이드 웹 (World Wide Web, WWW)란 무엇일까?

인터넷에 정보를 게시하는 인기 있는 방법 (이 역시 팀버너스리가 만들었다)

팀버너스리의 개발 일기..

  • 웹은 다른 인터넷 응용 프로그램보다 더 강력하고 사용자 친화적인 인터페이스를 제공한다.
  • 하이퍼링크를 지원해 사용자가 한번의 클릭으로 다른 문서를 탐색할 수 있게 해준다.
  • 시간이 지남에 따라 웹은 이미지, 오디오, 비디오 및 대화형 콘텐츠를 지원하며 점점 더 정교해졌고, 1990년 중반 Yahoo, Amazon.com 등은 웹을 기반으로 수익성 있는 비즈니스를 구축하기 시작했다. 2000년대에는 Yahoo MapsGoogle Docs와 같이 완전한 기능을 갖춘 웹 기반 응용 프로그램이 만들어졌다.
  1. W3C(World Wide Web Consortium)
  • 1994년에 웹의 공식 표준 기구로서 발표했지만, 권장 사항일 뿐 강요는 아니다.
  • 실제로 웹에 가장 큰 영향을 미치는 조직은 선도적인 웹 브라우저를 생산하는 Microsoft, Google, AppleMozilla이며, 이들이 채택한 기술이 즉 웹 표준이 된다.

웹 브라우저란 무엇일까?

웹 브라우저는 사용자가 웹 사이트를 다운로드하고 볼 수 있도록 하는 컴퓨터 프로그램이다.
데스크톱 컴퓨터, 태블릿 및 휴대폰에서 사용할 수 있다.

널리 사용되는 최초의 브라우저는 Mosaic였으며, 이후 Microsoft의 Internet Explorer에 의해 가려졌다. Mosaic팀은 Netscape 브라우저를 출시했으며, Netscape 브라우저의 오픈 소스 버전은 Firefox 브라우저가 되었다.

Apple은 2003년 Safari 브라우저를 출시했으며 Google은 2008년 Chrome 브라우저를 출시했다.

SSL이란 무엇일까?

SSL(Secure Sockets Layer)의 약어인 SSL은 웹 사용자가 인터넷을 통해 전송하는 정보의 개인 정보를 보호할 수 있도록 하는 암호화 기술 제품군이다.

Gmail.com처럼 보안 웹사이트를 방문하면 URL 옆에 자물쇠가 표시되어 사이트와의 통신이 암호화되었음을 나타낸다.

자물쇠

  • 주고 받는 정보를 제 3자가 읽을 수 없다는 신호
    - SSL은 데이터를 수신자만 해독할 수 있는 코딩된 메시지로 변환하여 보안을 수행한다.
  • 제 3자는 통신에 대해 무작위 문자열을 보게 된다.

SSLNetscape에 의해 도입되었으며, 초기에는 온라인 뱅킹 등에만 사용되었으나 Google, Yahoo, Facebook은 웹사이트와 온라인 서비스에 SSL 암호화를 사용했다.

최근 SSL을 보편적으로 사용하려는 움직임이 있었고,
2015년에 MozillaFirefox 브라우저의 향후 버전에서 SSL 암호화의 부재를 보안 결함으로 처리하여 모든 웹사이트의 업그레이드를 장려할 것이라고 발표했다.

Google Chrome에서도 같은 움직임이 있다.

도메인 이름 시스템이란 무엇일까?

DNS(Domain Name System)는 기억하기 어려운 IP주소 대신 브라우저에 google.com 등을 입력해서 엑세스 할 수 있는 이유이다.
웹 브라우저는 Name Server(Domain Name Server)에 접속해서 도메인별 IP를 응답받아 해당 IP의 컴퓨터에 접속한다.

즉, 도메인을 구입해서 네임서버에 등록해야 도메인을 사용할 수 있다!

시스템은 계층적이다.

  • 예를 들어 .com 도메인은 Verisign이라는 회사에서 관리한다.
    Verisigngoogle.com과 같은 하위 도메인을 할당하며,
    이 도메인의 소유자는 mail.google.com, maps.google.com과 같은 하위 도메인을 만들 수 있다.

인기있는 웹 사이트의 도메인 이름은 범죄에 악용될 우려가 있다.
DNS 보안을 강화하기 위한 DNSSEC라는 표준이 있지만 보편적이지 않다.

도메인 이름은 어떻게 관리될까?

도메인 이름 시스템(DNS)ICANN(Internet Corporation for Assigned Names and Numbers)에서 관리한다.

도메인 이름에는 두 가지 유형이 있다.

  1. .com, .edu, .org.gov와 같은 일반 최상위 도메인(gTLD) : 일반적으로 이 도메인에 대한 권한은 사설 조직에 있다.
  2. 국가 코드 최상위 도메인(ccTLD) : 미국의 경우 .us, 한국의 경우 .kr. 이러한 도메인은 각 국가에서 관리하는데, .tv, .io 등 일부는 국가 밖에서도 널리 사용된다.

인터넷은 어떻게 동작하는가

먼저, 인터넷은 거대한 네트워크라고 했다.

거대한 네트워크를 이용해 컴퓨터와 컴퓨터가 연결되기 위해 먼저,
인터넷에 연결된 각 컴퓨터에는 서로를 식별할 수 있는 고유한 주소(IP)가 필요하다.

IP(Internet Protocol) 주소

통신을 위해 각각의 컴퓨터, 장비가 가지고 있는 고유한 주소
주소를 통해 인터넷에서 서로를 식별할 수 있다.ICANN은 서로 다른 조직에 다른 IP 주소를 배포한다.

IP 주소를 어떻게 얻을까?

  1. ISP(인터넷 서비스 공급자)를 통해 인터넷에 연결하기
  • 접속 세션 동안 임시 IP 주소 할당
  1. LAN(Local Area Network)에서 인터넷에 연결하기
  • 컴퓨터에 영구 IP주소가 있거나, DHCP(Dynamic Host Configuration Protocol) 서버에서 임시 IP주소 얻기

IP 주소 확인하기 : 터미널에서 ping 도메인이름으로 확인할 수 있다.

웹 사이트에 접근하는 2가지 방법

  1. IP 주소로 접근하기 ➡️ 기억하기 어렵다!
  2. 도메인 네임으로 접근하기 ➡️ IP 주소에 내부적으로 대응되는 이름

IP 고갈 문제의 해결책

IPv4 : 0.0.0.0 ~ 255.255.255.255 (약 42억)
컴퓨터, 스마트폰, 사물인터넷이 모두 인터넷을 사용하기 때문에 IP가 부족하다!

  1. IPv6의 등장 : 새로운 주소체계 (2^128)
  2. Private IP : 하나의 한정된 공인 IP 안에 여러 개의 IP를 만든 체계
  • Private IP에는 사용자들이 직접 접속할 수 없다.

    • 포트 : 6만 5천개 정도의 가상의 문

      인터넷 서비스일반적인 포트 번호
      FTP20/21
      Telnet23
      SMTP25
      HTTP80
      HTTPS443
      MySQL3306
    • 포트 포워딩
      공유기(Public IP)가 컴퓨터(Private IP)로 토스해주는 것
      즉, Public IP에게 Private IP로 접속할 방법을 지정하는 것

  • 외부에서 불필요하게 접근하는 것을 막아주는 보안성

  1. Dynamic IP(유동 IP) : 통신사에서는 사용되지 않는 IP를 회수하고, 재사용시 새로 부여한다. 때문에 가정에서 서버를 운영하는 것은 적절치 못하다. (고정 IP 필요, 네임 서버 정보와 IP 정보가 다르다.)
  • DDNS : 네임서버에 계속해서 IP를 전달(도메인와 호스트의 IP를 지속적으로 동기화)해준다.
    IP가 바뀌어도 도메인으로 특정 서버 IP로 접속하는 것이 가능하다.

프로토콜 스택 및 패킷

고유한 주소를 어떻게 얻는지를 살펴보았다. 그렇다면 그 주소로 어떻게 통신을 할까?

메시지는 전자 신호로 번역되어 인터넷을 통해 전송된 다음 다시 텍스트로 번역되어야 한다.
이것이 프로토콜 스택으로 이루어진다.

인터넷에서 사용되는 프로토콜은 두 가지 주요 통신 프로토콜로 이루어져 있어 TCP/IP 프로토콜 스택이라고 한다.

프로토콜 계층설명
애플리케이션 프로토콜 계층WWW, 이메일, FTP 등과 같은 애플리케이션에 특정한 프로토콜
전송 제어 프로토콜(TCP) 계층TCP포트 번호를 사용하여 컴퓨터의 특정 애플리케이션에 패킷을 보낸다
인터넷 프로토콜(IP) 계층IPIP 주소를 사용하여 패킷을 특정 컴퓨터로 보낸다.
하드웨어 계층이진 패킷 데이터를 네트워크 신호로 변환하고 또 그 반대로 변환한다. (예: 이더넷 네트워크 카드, 전화선용 모뎀 등)

메시지를 보내는 과정은 다음과 같다.

1. 메시지는 컴퓨터의 프로토콜 스택 맨 위에서 시작해 아래쪽으로 동작한다.
2. 메시지가 길면 통과하는 각 스택 계층에서 더 작은 데이터 청크(패킷)로 나누어 전송한다.
3. 패킷은 애플리케이션 계층을 거쳐 TCP 계층으로 진행된다. 이 때 각 패킷에는 포트 번호가 할당된다.
4. TCP 계층을 거쳐 패킷은 IP 계층으로 이동한다. 여기서 각 패킷이 전송될 대상의 IP를 수신한다.
5. 이제 메시지 패킷에 포트 번호IP 주소가 있으므로 인터넷을 통해 전송될 준비가 완료되었다. 하드웨어 계층에서 텍스트로 된 패킷을 전자 신호로 변환하고 전화선을 통해 전송한다.
6. 전화선의 다른 쪽 끝에는 ISP가 인터넷에 직접 연결되어 있다. ISP 라우터는 각 패킷의 대상 주소를 검사하고 보낼 위치를 결정한다.
7. 패킷은 대상 컴퓨터에 도달해, 대상 컴퓨터의 프로토콜 스택 맨 아래에서 시작해 위쪽으로 동작한다.
8. 패킷이 스택을 통해 위쪽으로 이동하면 보내는 컴퓨터의 스택이 추가했던 모든 라우팅 데이터(IP주소, 포트 번호 등)가 패킷에서 제거된다.
9. 데이터가 스택의 맨 위에 도달하면 패킷의 원래 형식 데이터로 재조립된다!

네트워킹 인프라


실제 인터넷이 물리적으로 연결된 상태를 그려보자.

라우터

컴퓨터를 모두 연결하려면 너무 많은 연결이 필요하다. (예를 들어, 10대의 컴퓨터에 45개의 연결 필요)
그래서 네트워크의 각 컴퓨터는 라우터라고하는 특수한 소형 컴퓨터에 연결된다.
라우터에는 주어진 컴퓨터에서 보낸 메시지가 올바른 대상 컴퓨터에 도착하는지 확인하는 한 가지 작업만 수행한다.

모뎀

컴퓨터를 라우터에 연결하고, 라우터에서 라우터로 무한히 확장할 수 있다.
이렇게 연결된 거대한 네트워크를 전화 시설과 연결하기 위해 모뎀이라는 특수 장비가 필요하다.
모뎀은 네트워크 정보를 전화 시설에서 처리할 수 있는 정보로 바꾸며 그 반대도 가능하게 해준다.

전화 시설에 연결하고 나서, 네트워크에서 네트워크로 메시지를 보내기 위해 인터넷 서비스 제공 업체(Internet service Provider, ISP)에 연결해야 한다.

ISP

몇몇 특수한 라우터를 제외하고, 다른 ISP의 라우터에 엑세스 할 수 있게 해준다.
즉, 네트워크의 메시지는 ISP 네트워크의 네트워크를 통해 대상 네트워크로 전달된다.

  • 연결된 사용자들을 위해 모뎀 Pool을 유지한다.
  • 모뎀 Pool에서 백본, 또는 전용 회선 라우터로 데이터 흐름을 제어하는 전용 컴퓨터에 의해 관리된다.
  • 이 설정은 네트워크에 대한 엑세스를 제공하므로 포트 서버라고 할 수 있다. 청구 및 사용정보는 여기서 수집된다.

패킷이 전화 네트워크와 ISP의 로컬 장치를 통과한 후,
패킷은 ISP의 백본이나 ISP가 대역폭은 구입하는 백본으로 라우팅된다.
이때, 패킷은 목적지의 주소가 대상 컴퓨터의 주소인 컴퓨터를 찾을 때까지 여러 라우터와 여러 백본, 전용 회선 및 기타 네트워크를 통해 이동한다.

패킷이 인터넷을 차지하는 정확한 경로를 알고 있을까? : Traceroute 프로그램
traceroute는 주어진 인터넷 목적지로 가는 경로를 보여준다.

패킷이 목적지에 도달하기 위해 통과해야 하는 모든 라우터, 컴퓨터 및 기타 인터넷 엔티티의 목록을 보여준다.

인터넷 인프라

인터넷 백본

상호 연결되는 대규모 네트워크(Network Service Provider, NSP)로 구성된다.
대형 NSP : UUNet, CerfNet, IBM, BBN Planet, SprintNet, PSINet ...

이러한 네트워크들은 서로 peering하며 패킷 트래픽을 교환한다.
NSP는 3개의 NAP(Network Access Point)에 연결해야 한다.

NAP

NAP에서 패킷 트래픽은 한 NSP의 백본에서 다른 NSP의 백본으로 이동할 수 있다.
NAP는 수도권 지역 교환이나 MAE와 상호 연결되어 있다. (MAENAP와 같은 역할을 하지만 개인 소유다.)
NAP는 원래 인터넷 상호 교환 지점이었다. NAPMAE를 모두 Internet Exchange Points(IX)라고 한다.
NSPISP 및 소규모 대역폭 공급자 등 소규모 네트워크에 대역폭을 판매한다.

인터넷 라우팅 계층

어떤 컴퓨터도 다른 컴퓨터가 어디에 있는지 알지 못하며, 패킷이 모든 컴퓨터에 전송되지 않는다.
패킷을 목적지로 보내는 데 사용되는 정보는 인터넷에 연결된 각 라우터가 보관하는 라우팅 테이블에 포함된다.

라우터는 패킷 스위치다.
라우터는 일반적으로 네트워크 간에 연결되어 패킷을 라우팅한다.
각 라우터는 하위 네트워크가 사용하는 IP 주소를 알고 있다.
라우터는 라우터 상위의 IP 주소를 알지 못한다.

커다란 NSP 백본이 NAP에서 연결되고, 그 아래는 여러 개의 하위 네트워크가 있다.

패킷이 라우터에 도착하면 라우터는 발신 컴퓨터의 IP 프로토콜 계층에서 배치된 IP 주소를 검사한다.
라우터는 라우팅 테이블을 확인하고, IP 주소를 포함하는 네트워크가 발견되면 패킷이 해당 네트워크로 전송된다.
IP 주소가 포함된 네트워크를 찾을 수 없으면 위쪽(NSP 백본)으로 라우팅된다.

도메인 이름 및 주소 확인

DNS : 인터넷에서 컴퓨터 이름과 해당 IP 주소를 추적하는 분산 데이터베이스

웹 브라우저에 웹 주소를 입력하면 브라우저는 DNS 서버에 연결하여 입력한 도메인 이름에 대한 IP 주소를 얻고 대상 컴퓨터에 연결해 웹 페이지를 요청한다.

DNS는 IP 라우팅 계층 구조와 유사하다.

도메인 이름이 있는 DNS 서버를 찾을 때까지 상위 계층으로 리디렉션된다.

애플리케이션 프로토콜 : HTTP 및 월드 와이드 웹

인터넷에서 가장 널리 사용되는 서비스 중 하나는 WWW(World Wide Web)이다.
웹을 작동시키는 애플리케이션 프로토콜은 HTTP(Hypertext Transfer Protocol)이다.

HTTP

  • 웹 브라우저와 웹 서버가 인터넷을 통해 서로 통신하는 데 사용하는 프로토콜
  • 프로토콜 스택의 TCP 계층의 맨 위에 있다.
  • 애플리케이션(웹 브라우저, 웹 서버) 수준 프로토콜
  • 비연결형 텍스트 기반 프로토콜
    - 클라이언트(웹 브라우저)는 웹 페이지 및 이미지와 같은 웹 요소에 대한 요청을 웹 서버에 보낸다.
    • 서버에서 요청을 처리한 후, 클라이언트와 서버 간의 연결은 끊어진다.

웹 브라우저에 URL을 입력하면 일어나는 일

  1. URL에 도메인 이름이 포함된 경우, 브라우저는 먼저 DNS에 연결해 웹 서버에 해당하는 IP 주소를 검색한다.
  2. 웹 브라우저는 웹 서버에 연결하고 원하는 웹 페이지에 대한 HTTP 요청프로토콜 스택을 통해 보낸다.
  3. 웹 서버는 요청을 수신하고 원하는 페이지를 확인한다. 페이지가 존재하면 웹 서버가 페이지를 보낸다. 서버가 요청된 페이지를 찾을 수 없으면 HTTP 404 오류 메시지를 보낸다.
  4. 웹 브라우저는 페이지를 다시 수신하고 연결이 끊어진다.
  5. 브라우저는 페이지를 파싱(구문 분석)하고 웹 페이지를 완성하는 데 필요한 다른 페이지 요소(이미지, 애플릿 등)를 찾는다.
  6. 필요한 각 요소에 대해 브라우저는 서버에 추가 연결 및 HTTP 요청을 수행한다.
  7. 브라우저가 모든 이미지, 애플릿 등의 로드를 완료하면 페이지가 브라우저 창에 완전히 로드된다.

Telnet을 사용해 HTTP를 사용한 웹 페이지 검색 해보기

애플리케이션 프로토콜 : SMTP 및 전자 메일

일반적으로 쓰이는 또 다른 인터넷 서비스는 전자 메일이다. 전자 메일에서 쓰는 애플리케이션 수준 프로토콜은 SMTP(Simple Mail Transfer Protocol)이다.

SMTP

  • 애플리케이션 수준 프로토콜 사용
  • 텍스트 기반 프로토콜
  • HTTP와 다르게 연결 지향적
  • HTTP보다 더 복잡하고, 더 많은 명령과 고려 사항이 있다.

메일 클라이언트를 열면 일어나는 일

  1. 메일 클라이언트(Netscape Mail, Lotus Notes, Microsoft Outlook 등)는 기본 메일 서버에 대한 연결을 연다. 메일 서버의 IP 주소 또는 도메인 이름은 일반적으로 메일 클라이언트가 설치될 때 설정된다.
  2. 메일 서버는 항상 자신을 식별하기 위해 첫 번째 메시지를 전송한다.
  3. 클라이언트는 서버가 250 OK 메시지로 응답할 SMTP HELO 명령을 보낸다.
  4. 클라이언트가 메일을 확인하는지 보내는지 등에 따라 적절한 SMTP 명령이 서버로 보내지고 서버는 그에 따라 응답한다.
  5. 이 요청/응답 트랜잭션은 클라이언트가 SMTP QUIT 명령을 보낼 때까지 계속 된다. 그러면 서버가 종료되고 연결이 끊어진다.

전송 제어 프로토콜 (TCP)

애플리케이션이 인터넷의 다른 컴퓨터에 연결하면 특정 애플리케이션 계층 프로토콜을 사용하여
보내는 메시지가 스택을 통해 TCP 계층으로 전달된다.

TCP포트 번호를 사용해 애플리케이션이 프로토콜을 대상 컴퓨터의 올바른 프로그램으로 라우팅하는 역할을 한다.
ex. 이메일을 읽으면서 웹 서핑을 하는 것 : 두 애플리케이션(웹 브라우저와 메일 클라이언트)이 서로 다른 포트 번호를 사용했다.

TCP가 프로토콜 스택을 사용해 올바른 애플리케이션으로 라우팅하는 방법

  • (클라이언트) TCP 계층은 위에서 애플리케이션 계층 프로토콜 데이터를 수신하면 관리 가능한 청크로 분할한 다음 각 청크에 특정 TCP 정보가 포함된 TCP 헤더를 추가한다. TCP 헤더에 포함된 정보에는 데이터를 보내야 하는 애플리케이션의 포트 번호가 포함된다.
  • (서버) TCP 계층이 그 아래에 있는 IP 계층에서 패킷을 수신하면 TCP 계층은 패킷에서 TCP 헤더 데이터를 제거하고 필요한 경우 일부 데이터 재구성을 수행한 다음 TCP에서 가져온 포트 번호를 사용해 패킷을 올바른 응용 프로그램에 보낸다.

TCP

  • 텍스트 프로토콜이 아니다.
  • 연결 지향적(데이터 교환 전에 연결 설정)이고 안정적인 바이트 스트림 서비스이다.
  • 신뢰성 : 수신된 각 패킷에 대해 전송을 확인하기 위해 발신자에게 확인을 보낸다.
  • 헤더에 체크섬(수신된 데이터의 오류 검사)을 포함한다.

TCP 헤더

TCPIP에 대해 아무 것도 모른다.
TCP의 역할은 애플리케이션 수준 데이터를 애플리케이션에서 애플리케이션으로 안정적으로 가져오는 것이다.
컴퓨터에서 컴퓨터로 데이터를 가져오는 작업은 IP의 작업이다.

인터넷 프로토콜

IP

  • TCP와 달리 신뢰할 수 없다.
  • 연결이 없는 프로토콜

TCP와 달리 IP는 패킷이 목적지에 도달하는지 여부를 신경쓰지 않는다.
IP는 연결 및 포트 번호에 대해 알지 못하며, IP의 역할은 단지 패킷을 다른 컴퓨터에 보내고 라우팅하는 것이다.
IP 패킷은 독립적인 엔터티이며 순서가 맞지 않거나, 목적지에 도착하지 않을 수 있다. (TCP의 역할)

IPTCP의 공통점은 데이터를 수신하고 자신의 헤더 정보를 TCP 데이터에 추가하는 방식 뿐이다.

IP 헤더

IP 헤더에서 보내는 컴퓨터받는 컴퓨터IP 주소를 볼 수 있다.

보내는 컴퓨터에서 애플리케이션 계층, TCP 계층, IP 계층을 거친 패킷의 모습은 이렇다.

1. 애플리케이션 계층 데이터는 TCP 계층에서 분할되고
2. TCP 계층에서 TCP 헤더가 추가되고
3. 패킷은 IP 계층으로 진행되어 IP 헤더가 추가된 다음
4. 완료된 패킷이 인터넷을 통해 전송된다.

참고 자료

The internet, explained
How Does the Internet Work?
생활코딩 : 인터넷과 웹의 역사
생활코딩 : 인터넷
MDN : 인터넷은 어떻게 동작하는가?

profile
Frontend Web Developer

12개의 댓글

comment-user-thumbnail
2022년 4월 23일

엌ㅋ 반도 모르겠네요
정리 감사합니다

1개의 답글
comment-user-thumbnail
2022년 4월 25일

이런 웹의 기본 관련 정보가 필요했는데, 잘 읽고 갑니다!!

1개의 답글
comment-user-thumbnail
2022년 4월 25일

이 글을 읽고 인터넷이 빨라진 느낌을 받았습니다.

1개의 답글
comment-user-thumbnail
2022년 4월 27일

네트워크... 만악의 근원이죠 ㅠ 저는 맨날 에러나면 네트워크탓이 90프로인듯.. 시리즈 재밌을거 같아용 계속올려주세요 ㅋㅋ

1개의 답글
comment-user-thumbnail
2022년 4월 29일

와 ,, 깔끔한 정리 감사합니다 :)

1개의 답글
comment-user-thumbnail
2022년 4월 29일

엄청 깔끔하게 잘 정리하셨네요😍 잘 읽었습니다!

1개의 답글