728x90

 

 

  • Demultiplexing : Internet Layer로부터 받은 segment나 datagram에 있는 payload를 적절한 socket으로 전달하는 것
  • Multiplexing : Internet Layer로 socket들로부터 데이터를 수집해서 각각 segment나 datagram으로 만든 후 보내는 것
  • Internet Layer의 TCP/UDP 정보가 있어 해당 정보를 확인하여 각 Transport Layer 양식에 맞춰 Transport Layer에 보내줌
  • Transport가 어떤 프로세스(Socket)으로 데이터를 보내야 하는지 어떻게 판단할까?
    • port로 구분
      • UDP : Destination Port로 보내면 끝
      • TCP
        • syn flag가 1이면 listening socket으로 보내고
        • 이미 연결된 Connection이면 TCP, IP Address, Port 다 같은 곳으로 보냄

 

 

*Layer는 

728x90
728x90

Socket

  • Application(process)이 시스템의 기능을 마음대로 사용하는 것은 불가능
  • 대신 System은 네트워크 통신을 위한 Interface를 제공
  • Application(process)이 Socket을 통해 데이터를 주고 받음(=통신)
  • 개발자는 Socket Programming을 통해 네트워크 상의 다른 Process와 데이터를 주고 받을 수 있도록 구현한다.
  • 대부분의 System(OS)은 Socket 형태로 네트워크 기능을 제공(Linux, Window 등)

 

  • 개발자로서 일하면서 Socket Programming을 한 적이 없는 이유
    • 대체로 Application Layer의 프로토콜을 라이브러리로 가져와 사용하게 된다. 이 라이브러리가 보통 Socket을 사용한 네트워크 통신을 구현하고 있음. 즉, 실제로는 사용하고 있지만 잘 모르고 있는 것임.
    • 따라서 일반 Application 개발자는 Socket Programming을 직접할 일이 적다.

 

  • Socket = < Protocol , IP address, Port number >
    • Port number는 Socket을 구분하기 위한 숫자
    • UDP는 3개(protocol, ip, port)로 식별할 수 있지만 TCP는 불가능
  • TCP에서의 동작

- Connection A와 Connection B는 source의 IP, Port와 target의 IP, Port의 조합으로 연결을 식별한다.

- 그래서 서로 다른 프로세스(socket C1, socket C2)가 같은 정보의 소켓을 가지고 동일한 서버 프로세스와 연결을 생성하려고 하면 에러가 발생할 것이다. 

- 표준 문서에서는 TCP Socket이 IP address와 Port만으로 식별할 수 있다고 써있지만 실제 구현에서는 위와 같이 Connection을 구별하기 위해 양 프로세스의 Socket 정보를 모두 활용한다.

 

*UDP는 Connection 개념이 없이 그냥 데이터 주고 받는다.

 

TCP, UDP 각각의 사용처

  • TCP : Connection(연결) 기반, 신뢰성 보장, 데이터 순서 보장 => 느림
    • 웹 - HTTP, HTTPS 통신
    • 파일전송 - FTP, SFTP
    • 이메일 - SMTP, IMAP, POP3
    • 원격접속 - SSH, Telnet
    • 데이터베이스와 클라이언트간 통신
  • UDP : 신뢰성보다 속도효율성 중시, 비연결 지향 => 빠름
    • Streaming 서비스 - Youtube, Netflix
    • 온라인 게임
    • VoIP(Voice over Internet Protocol) - Skype, Zoom 
    • DNS(Domain Name Service) <= 도메인 이름을 IP주소로 바꿔주는 건 가볍고 빠르게 처리해야 함.
    • IoT 통신 - MQTT-SN, CoAP <= IoT 장치들은 제한된 리소스를 가지고 있어 빠른 UDP를 주로 사용

 

 

728x90
728x90

- 소켓과 포트가 속하는 위치는?

 

- process와 port가 1대1 반드시 구조여야 하는 것은 아니다.

- Port name으로 식별한다.(OS마다 다른 방식으로 port에 name을 부여한다)

 

- TCP/IP의 Internet 계층의 Internet Protocol(IP)를 이용하여 데이터를 전달하게 되는 데 프로세스간 이 때, IP는 unreliable(신뢰할 수 없는)하다는 특성을 지니고 있다. 

- Data loss와 out-of-order 위험이 있으므로 그 위에서 동작하는 Application(Process)간, 즉 transport 계층의 통신에 신뢰성을 부여해야 한다. => TCP 개념 등장

 

  • TCP; Transmission Control Protocol 
    • 프로세스 사이에서 데이터를 안정적으로 주고받도록 함.
    • TCP 에서의 Connection이란 프로세스 간 안정적이고 논리적인 통신 통로를 의미한다.
      • 3-way handshake로 초기화(initialization)을 통해 데이터를 주고 받을 수 있는 환경인 Connection을 연다.
      • 4-way handshake로 Connection을 닫는다.
      • 이런 방식을 Connection-oriented 라고 부른다.

 

  • 그렇다면 Connection을 구축하기 위해 인터넷 상에서 어떻게 port를 식별하는가?
    • port number(port라고도 부름)를 정의 : 16bit(0~65535)
    • port number만으로는 부족 => Internet Address(IP)와 port number로 인터넷 상에서 각 포트를 식별할 수 있음 => 이를 Socket이라고 부름
    • 즉, Socket은 각 포트를 유일하게 식별하기 위해 나온 개념이므로 Socket은 인터넷 상에서 unique해야 함.
    • TCP 표준에서는 한 쌍의 Socket으로 Connection을 유일하게 식별할 수 있다.
      • source의 IP address, port number
      • destination의 IP address, port number
      • 이렇게 4가지로 Connection을 유일하게 식별 가능.
    • 하나의 소켓은 여러 개의 연결에 사용될 수 있다. (서버의 경우 소수의 socket으로 여러 클라이언트의 connection을 상대해야 할 것이다.

 

  • UDP : User Datagram Protocol 
    • Connection 없이 데이터를 주고 받음. 즉, Connectionless
    • Internet Protocol을 거의 그대로 사용하여 unreliable함. 그래서 UDP 공식문서에는 Socket이란 단어는 나오지 않지만 UDP에서도 Socket의 개념을 사용함(목적지 소켓이 있어야 하므로)

 

  • TCP, UDP 통틀어서 Socket을 구별하기 위해서는 Protocol, IP address, Port number 3가지로 구성된다.
  • 위 TCP 설명에선 Socket을 IP와 Port number의 조합이라고 했지만 UDP를 포함한 개념에서는 Socket을 3가지 조건으로 식별해야 한다.

- process A, B는 프로토콜이 다르므로 서로 다른 socket에 연결되어 있는 것이다. 

 

- 각각의 Connection은 서로 다른 조합의 Socket 한 쌍을 가지므로 유일하게 식별 가능하다.

 

 

- 위 내용들은 모두 표준에 관한 내용이기 때문에 실제 구현의 세계에서는 소켓의 개념이 좀 다르게 쓰인다고 함.

728x90
728x90

World Wide Web : 여러 정보들을 링크를 통해 효율적으로 접근할 수 있는 인터넷 상에서 동작하는 전 지구적인 정보시스템

 

  • Hypertext 기반 링크 방식 시스템 개발
  • Link는 어떤 서버로 가야 데이터를 요청할 수 있는지를 담고 있음 => URL 개념

Web Browser 발명

  • CERN Httpd 서버 발명(최초의 Web Server)
  • 최초의 Website 발명
  • hypertext의 마크업 언어 HTML 개발
  • HTML 통신 프로토콜 HTTP 개발 - web의 토대가 되는 프로토콜
  • UDI(오늘날의 URL) : 데이터를 요청할 서버의 위치를 특정할 대상
  • 1993년 4월 30일 www 관련 software, source code 무료 공개 후 급성장

- 최초의 웹서버, This machine is a server. DO NOT POWER IT DOWN!! 라고 쓰여 있다.

728x90
728x90
  • Network 의 역할
    • 어플리케이션의 목적에 맞는 통신 방법 제공
    • 신뢰할 수 있는 데이터 전송 방법 제공
    • 네트워크 간 최적의 통신경로 결정
    • 목적지로 데이터 전송
    • 각 노드 사이의 데이터 전송
  • 통신 기능이 제대로 이루어지기 위해선 참여자들 사이에 약속된 통신 방법이 있어야 한다. => 형식, 절차, 규약이 있어야 한다. 이러한 통신 규약을 네트워크 Protocol 이라고 한다.
  • 네트워크의 역할이 여러 개이므로 Protocol 또한 여러 종류가 있어야 한다. 즉 각 역할별로 Protocl이 모듈화 되어 있다.

 

  • 각 기능별로 나눈 계층 구조(Layered Architecture)가 필요하다. 각 레이어 별로 역할에 따라 모듈화되어 있는 것이다. 
    • OSI model (7 layer) : 범용적인 네트워크 계층 구조 
    • TCP/IP model (4 layer) : 인터넷에 특화된 네트워크 계층 구분법
  • 각 Layer의 Protocol은 하위 Layer의 Protocol이 제공하는 기능을 사용하여 동작한다.

 

  • L7 - Application Layer : HTTP, DNS, SMTP, FTP 등 application 목적에 맞는 통신방법제공
    • 실제로 데이터가 어떻게 전송될지는 관심없음
  • L6 - Presentation Layer : APP간 통신에서 메시지 format 관리
    • 인코딩 <=> 디코딩
    • 암호화 <=> 복호화
    • 압축 <=> 압축풀기
  • L5 - Session Layer : App 간 통신에서 session 관리, RPC(Remote Procedure Call) 동작이 이 위에서 이루어짐.
  • *L5 ~ L7 : Application과 관련된 기능 담당
  • L4 - Transport Layer : App간 통신담당 => 목적지 App으로 데이터 전송, 어떤 방법 (TCP,UDP)으로 보낼지 결정
    • TCP : 안정적, 신뢰성있는 데이터 전송 보장
    • UDP : 필수 기능만 제공
  • L3 - Network Layer
    • Host간 통신담당(IP)
    • 목적지 호스트로 데이터 전송
    • 네트워크간 최적 경로 결정
  • L2 - Data Link Layer 
    • 직접 연결된 노드 간 통신담당
    • MAC 주소 기반 통신(ARP)
  • L1 - Physical Layer : 물리적인 매개체(케이블, 무선 등)를 통해 bit 단위로 데이터 전송(전기신호)

  • 각 계층을 거치면서 데이터에 각각의 계층에 해당하는 Header 정보를 담는다.(L2 데이터 링크 계층에서는 Header뿐만 아니라 꼬리 부분에 Trailer 정보를 붙인다, 또한 L1의 헤더는 없다, 그냥 보내는 역할을 칭하는 것)

 

 

  • 라우터를 거치면서 Encapulation과 Decapsulation을 거치면서 목적지에 도달하게 된다.
  • TCP/IP 모델과는 아래와 같이 대응된다.

728x90
728x90

네트워크 기초 시리즈는 유튜버 '쉬운코드'의 네트워크 강의를 정리함

https://youtu.be/oFKYzp6gGfc?si=pMc1aOUFQ_Y2y4qo

 

  • IP address : 인터넷에 연결되기 위한 필요한 인터넷상의 주소
  • 모뎀(modem)
    • 네트워크 통신에 필요한 신호변환장치
    • 디지털 정보를 아날로그 신호로 변조(modulation)하여 송신하고, 수신된 아날로그 신호를 디지털 신호로 복조(demodulation)
  • 공유기(Home Router)
    • 여러 기기들이 인터넷에 연결될 수 있도록 하는 장치(LAN, wifi를 통해 기기들을 공유기에 연결)
    • 하나의 IP 주소로 동시에 여러기기들이 인터넷을 사용하게 하는 것이 가능.
    • 공유기에 연결된 기기들은 같은 네트워크 소속

  • 스위치(switch)
    • 같은 네트워크에 있는 기기들이 서로 통신할 수 있도록 하는 장치
    • 보통 공유기의 LAN 포트가 부족할 때 사용
    • '스위칭 허브' 혹은 '허브'라고 불림

 

  • Network : 컴퓨터나 기기들이 리소스를 공유하거나 데이터를 주고 받기 위해 유무선으로 연결된 통신 체계
  • LAN(Local Area Network) : 집, 회사, 건물 등 제한된 범위의 네트워크
    • LAN 구성 기술
      • Ethernet : 유선 통신
      • wireless LAN : 무선 통신(=wifi)
  • WAN(Wide Area Network) : 여러 LAN이나 다른 종류의 네트워크를 하나로 묶어서 통신이 되도록 만든 네트워크
    • Ex) 은행 ATM, wireless WAN, Internet(=> 4G, 5G)
  • Internet : 네트워크들의 네트워크, the World's Largest WAN, Global network
  • ISP(Internet Service Provider) : 일반 사용자, 회사 등이 인터넷을 사용하도록 인터넷 연결 서비스를 제공하는 업체
    • ex) AT&T , NTT, SKT, KT, LG 등
  • 서로 다른 ISP의 네트워크들이 서로 연결되어 있기 때문에 서로 다른 ISP의 사용자들이 통신할 수 있다.

 

  • ISP는 역할과 규모에 따라 tier가 나뉜다.
    • Tier 1 
      • 국제 범위의 네트워크 보유
      • 인터넷의 모든 네트워크 접근 가능
      • 인터넷의 중축, Backbone
      • Tier 1 간 트래픽 전송 비용 없음 - 청구해봤자 서로 상계되기 때문에
      • 그래서 인프라 자체로 수익을 얻음
    • Tier 2
      • 국가/지방 범위 네트워크 보유
      • Ex) SKT, KT, LG 등
      • 일반 사용자나 기업대상 서비스 제공
      • Tier 2간의 트래픽은 비용 없음
    • Tier 3
      • 작은 지역 범위 제공
      • 상위 ISP에게 비용을 내고 인터넷 트래픽 구매하여 서비스
      • Tier 2가 모든 지역을 커버하지 못하는 미국같은 넓은 지역에서 존재하는 서비스

  • ISP 네트워크 간에는 Router를 이용하여 연결한다.
    • Router : 목적하는 네트워크에 데이터를 보내는 장치
  • 네트워크를 이루는 각각의 장치들을 Node라고 부른다. PC, 공유기, 모뎀, 라우터 등이 모두 Node이다.
  • 네트워크의 끝에 있는 노드(핸드폰, PC 등) : End system, Host
    • 네트워크를 사용하기 위한 목적
    • Client(요청하는 host)와 Server(제공하는 host)로 역할이 나뉨

 

728x90

+ Recent posts