2024-08 TIL

Soo Im·2024년 8월 13일
0

일별 TIL 기록

목록 보기
17/20
post-thumbnail

두 번의 이직을 거쳐 다시 서비스 기획자로 돌아왔다.
이제 놓았던 공부를 다시 시작할 때가 왔다!

흥미를 잃지 않기 위해 산만하더라도 여러 주제를 TIL에 다 때려넣을 계획이다.
그러다 특정 주제의 내용이 모이면 따로 발행을 하려고 한다.

  1. 네트워크
  2. 네이티브 앱 관련
  3. Figma
  4. 금융 상품
  5. UX

(이러다 파이썬 다 까먹겠는데...)

우선 하다가 필요한 거 생기면 거기로 넘어가자 😅
일단 오늘은 네트워크!

2024-07-25 <네트워크>

LAN VS. WAN

LAN (Local Area Network)WAN (Wide Area Network)
범위좁은 지역 (예: 집, 사무실)넓은 지역 (예: 도시)
속도빠름느림
접속 방식유선 랜 (컴퓨터에 꽂는 그 선) 혹은 무선 랜 (공유기)ISP (인터넷 서비스 공급자)의 모뎀, 라우터

ISP는 어떻게 우리 집 컴퓨터를 인터넷에 연결해주나?

  1. ISP 네트워크: ISP는 인터넷에 연결하는 네트워크 인프라 (예: 타워, 케이블 등)을 갖추고 있다.
    마치 전선을 통해 전기가 들어오는 것처럼, ISP의 네트워크가 특정 방식을 통해 집으로 연결된다. 무선 타워, 케이블, 안테나 접시...
  2. 모뎀: 모뎀은 일종의 번역기로, 디지털 신호와 아날로그 신호를 modulation/demodulation 하는 장치이다. 이게 라우터와 결합하면 집 안에 로컬 네트워크 (LAN)가 생긴다.
  3. 라우터: 라우터는 데이터 배달부에 비유할 수 있다. 데이터를 보내려는 주소까지의 최적 경로를 찾고 배달한다.
    만약 직접 갈 수 있는 구간 (LAN)이면 직접 가져다 주고, 멀리 있는 구간 (WAN)이면 데이터를 ISP 라우터로 전달한다. 각각의 라우터들이 데이터를 패스하면서 멀리 있는 구간까지 연결이 되는 것이다.
    덧붙여 공용 IP와 개인 IP를 필요에 따라 전환하는 NAT (Network Addrress Translation) 역할도 한다. 이렇게 하면 효율적으로 주소를 관리할 수 있다. 국제 우편을 보낼 때 처음부터 세부 주소를 알 필요가 없으니 국가만 먼저 보고, 나중에는 국가 주소 대신 세부 주소를 보는 것과 비슷한 것.

2024-07-27 <네트워크>

통신 규격 모델 (OSI, TCP/IP)은 왜 알아야 하나?

OSI는 7계층, TCP/IP는 4계층으로 구성되어 있다.
각 계층을 배우기 전에... '그래서 이걸 왜 알아야 하나?' 하는 의문이 들었다.
정리해보면 다음과 같다.

  1. 통신 규격이 없던 시절에는 같은 회사 안에서만 통신이 되던 때도 있었다.
  2. 이에 ISO가 통신 규격인 OSI 모델을 만들었고, 현재는 TCP/IP 모델을 사용한다.
  3. 각 계층을 이해해야 나중에 문제가 발생했을 때 어느 계층의 문제인지 (예: 하드웨어 문제-물리적 계층-인지, 라우팅 문제-네트워크 계층-인지) 파악을 할 수 있다.


이미지 출처: https://ming9mon.tistory.com/2

감을 잡기 위해 각 계층의 챕터 제목만 가져왔다.

계층설명관련 키워드
물리데이터를 전기 신호로 변환랜 케이블, 리피터, 허브
데이터 링크랜에서 데이터 전송이더넷, MAC, 스위치
네트워크목적지에 데이터 전달IP, 라우터, 서브넷
전송신뢰할 수 있는 데이터 전송연결/비연결형 통신, TCP, UDP
응용애플리케이션에 데이터 전송웹 서버, DNS

캡슐화/역캡슐화

데이터 송신측과 수신측은 둘 다 위의 계층을 거쳐서 데이터를 보내고 받는다.
위 계층을 지나기 위해서는 각각 맞는 헤더를 붙이거나 (송신 측) 떼야 (수신 측) 한다. 이 과정을 캡슐화/역캡슐화 라고 부른다.
참고로 데이터 링크 계층에서는 데이터 앞에 붙는 헤더, 뒤에 붙는 트레일러 둘 다가 붙거나 떨어진다.

2024-07-28 <네트워크>

1단계. 물리 계층: 데이터를 전기 신호로 변환

(하드웨어 제품 할 때 들어본 용어가 나온다 ㅎ... 반갑네 😇)

물리적 매체를 통해 디지털 신호를 광학/전기 신호로 변환하는 계층.

주요한 장비는 아래와 같다.

  1. 랜 카드
    디지털 신호 (0/1)와 전기 신호를 변환하는 장비. 예를 들면 0은 0V, 1은 +5V... 이런 식으로 변환한다. 전기 -> 디지털 역방향도 마찬가지.
  2. 랜 케이블
    다이랙트 케이블/크로스 케이블 두 종류가 있다. 케이블 양 끝단의 구리선이 곧게 연결되어 있냐 중간에 꼬아놓았느냐 차이인데... 아주 자세하게 알 필욘 없을 것 같다. 용도가 다르다고 함. (보통 다이렉트는 서로 다른 종류의 장비끼리, 크로스는 같은 종류의 장비끼리 연결할 때 사용)
    - 다이렉트: 컴퓨터-스위치/허브, 라우터-스위치...
    - 크로스: 컴퓨터-컴퓨터, 스위치-스위치...
  3. 리피터
    전기 신호 증폭 장치. 요즘은 잘 안 쓴다고.
  4. 허브
    리피터와 유사하지만 포트가 여러 개여서 한 번에 여러 장비로 보낼 수 있다. (추억의 PoE 허브 ^^는 전력까지 공급해주는 허브.)

2024-07-30 <네트워크>

2단계. 데이터 링크 계층: LAN에서 데이터 전송

네트워크 장비 간에 신호를 주고받는 규칙을 정하는 계층. 대표적인 규칙이 랜에서 사용하는 이더넷.

(다른 사람들은 이 설명만 보고 이해를 할 수 있는건가?...)

비유를 하자면 편지 (데이터)를 우체국을 통해 보낼 때, 봉투의 역할을 하는 게 데이터 링크 계층이다.
랜 통신망에서 케이블을 통해 데이터를 주고 받는 규칙인 이더넷을 예시로 들어 설명하면 아래와 같다.

  1. 프레이밍
    아주 많은 편지를 적당히 나누고 (패킷 조각) 봉투에 넣는다. 봉투에 주소 (Media Access Control 주소-IP 주소)를 쓴다.
  2. 데이터 송신
    편지(프레이밍된 패킷)가 우체국 차(랜 케이블)를 타고 이동한다.
  3. 주소 지정
    우체국 (허브/스위치)에서 주소를 보고 어디인지 식별하고, 적절히 분류해서 잘 이동할 수 있게 한다.
  4. 오류 감지 및 처리
    수신된 편지가 송신한 편지와 일치하는지 확인하고, 오류가 있으면 재전송을 요청한다.
  5. 흐름 제어
    운송 과정에서 과부하가 걸리거나, 같은 통로를 쓰는 편지들 사이에 충돌이 일어나지 않도록 관리한다.
    (예전에는 데이터를 송신하기 전에 케이블에 신호가 흐르는지 체크하는 CSMA/CD라는 방식을 사용했는데, 요즘은 잘 사용하지 않는다고 함.)

2024-08-05 <네트워크>

2단계. 데이터 링크 계층 (이어서)

  1. MAC 주소
    1.1 MAC 주소란?
    - 물리 계층에서 언급한 '랜 카드'는 제조 당시에 고유한 MAC 주소를 받는다.
    1.2 그걸 왜 지금 다루나?
    - 데이터 링크 계층에서 MAC 주소를 다루는 이유는 랜에서 데이터를 전송할 때 이 주소를 기준으로 전송하기 때문이다.
    1.3 이더넷 헤더/트레일러
    - 위의 캡슐화 과정을 보면 데이터 링크 계층에서 데이터의 앞뒤로 '링크 헤더'와 '링크 트레일러'가 붙는다. 이더넷 통신을 예로 들면 '이더넷 헤더'와 '트레일러'이다.
    이 때 이더넷 헤더에 목적지의 MAC 주소, 출발지의 MAC 주소 정보가 붙는다. (여기에 추가로 IPv4...같은 프로토콜 번호도 붙는데 이건 몰라도 된대서 패스)

  2. 프레임
    전에 '프레이밍'을 편지를 봉투에 넣는 과정으로 비유했다. 위의 이더넷 헤더와 트레일러를 추가하는 과정을 '프레이밍'이라고 할 수 있다. 이 둘이 추가된 데이터를 '프레임'이라고 부른다.

  3. 프레임의 전송
    허브는 들어온 데이터를 모든 포트로 내보내지만, 포트를 구별해서 보낼 수는 없다. 이 때 프레임을 이용하면 원하는 곳으로만 보낼 수 있다.
    (1) 전송자가 목적지 MAC 주소를 이용해서 데이터를 프레임으로 만든다. (캡슐화)
    (2) 이 프레임이 물리 계층을 통해 전기 신호로 바뀐다.
    (3) 허브는 모든 포트로 신호를 전송한다.
    (4) 그 중 목적지가 아닌 컴퓨터는 자신의 MAC 주소로 온 게 아닌 프레임을 파기한다.
    (5) 목적지인 컴퓨너는 반대로 전기 신호를 프레임으로, 프레임을 데이터로 만든다. (역캡슐화)

2024-08-09 <금융 상품>

증권 1도 모르는 인간이 거래소에 들어온 🍯잼 실화

호가의 세계

'호가'를 알고 난 뒤로 다른 용어를 익히기가 더 수월해졌다.
그래서 오늘은 호가와 관련 용어 시리즈!

  • 호가: 문자 그대로 '부르는 값'. 매수자가 부르는 사려는 값 (매수 호가), 매도자가 부르는 팔려는 값 (매도 호가)으로 나뉜다. 단순히 값 그 자체라기 보다는 그 가격에 사고 팔겠다는 주문의 의미도 내포한다. 당근마켓으로 비유하면 사요~팔아요~ 게시글을 올리는 것.
  • 오더북: 주문 order을 모아놓았다고 해서 오더북. 증권 앱 같은 데에서 '호가' 쪽을 누르면 보인다 (위 사진). 가운데 가격을 중심으로 좌측에 좀 더 비싸게 팔고 싶은 매도 호가의 수량, 우측에 좀 더 싸게 사고 싶은 매수 호가의 수량이 보인다. 보통 히스토그램으로 표시도 같이 해준다. 이걸 보면 어느 매수/매도 호가에 물량이 많이 있는지, 매수/매도 중에 누가 더 우세한지 등을 볼 수 있다.
  • 스프레드: 매도 호가와 매수 호가의 차이. 선물거래에서 스프레드 차익을 얻는다... 이런 설명도 나오지만 우선 중요한 건 가격의 차이 그 자체다. 시장에서 스프레드가 과하게 커지면 매수자와 매도자 간의 거래 성립이 어려워질 수 있다. 당근마켓에서 사는 사람이 100원, 파는 사람이 500원으로 제시하면 거래 성립이 안 되는 것과 마찬가지.
  • 유동성: 의미는 다양하겠지만 여기서는 얼마나 '이 주식을 잘 살 수 있고 팔 수 있는지', 즉 현금과 얼마나 쉽게 교환이 가능한지를 나타내는 척도라고 정의하겠다. (경제가 사랑하는 단어 중 하나인 듯) 스프레드 개념과 연결해보면 스프레드가 클수록 유동성은 낮다. 유동성은 거래소의 중요한 지표 중 하나이다. 많은 사람이 쓰는 당근마켓과, 회사 직원들끼리 사용하는 사내 중고장터를 비교하면 당근마켓의 유동성이 더 높다.
  • 마켓메이커 & 마켓테이커: 호가가 촘촘해야 스프레드가 작아지고 유동성이 높아진다. 그리고 유동성이 높아야 고객이 더 많이 찾아오기 때문에 (사내 중고장터보다 당근마켓을 더 많이 찾는 것처럼) 거래소는 유동성을 높이기 위해 '마켓메이커'라는 제도를 둔다. 마켓메이커는 스프레드 사이에 호가를 만들어서 스프레드가 과도하게 벌어지지 않고 거래가 원활하게 일어나도록 만든다. 이들은 시세차익도 얻지만 거래소로부터 인센티브를 받기도 한다. '오더북에 오더를 만들어내는 쪽'이라는 의미에서 마켓'메이커'.
    마켓테이커는 반대로 오더북에서 오더를 바로 빼가는 쪽이다. 즉시 주문이 체결되는 시장가 주문이 그 예시. 이 쪽은 유동성을 줄이는 쪽이기 때문에 그다지 인센티브를 받지 못한다.
    그래서 거래소 등에서 메이커 수수료와 테이커 수수료를 구분하기도 한다. 유동성을 공급하는 메이커를 우대하는 목적으로 메이커 수수료가 더 낮다.

2024-08-13 <네트워크>

스위치

스위치도 허브와 동일하게 여러 장비를 포트로 연결하는 장비이다. 요즘은 아래 장점 때문에 허브보다 스위치를 많이 쓴다.

허브스위치
MAC 인식포트별 MAC을 알 수 없어 들어온 데이터를 모든 포트로 전송한다.포트별 MAC 주소를 기록하는 'MAC 주소 테이블'을 가지고 있어 지정한 포트에만 데이터를 전송한다.
통신 방식반이중 통신 (회선 하나에서 송신/수신 번갈아)전이중 통신 (송신/수신 회선 따로)
데이터 충돌반이중 통신 때문에 동시에 데이터를 보내면 충돌 발생전이중 통신 때문에 동시에 데이터를 보내도 충돌 없음
충돌 도메인 (데이터 충돌이 미치는 범위)허브에 연결된 모든 컴퓨터충돌이 일어난 컴퓨터

2024-08-14 <네트워크>

3단계. 네트워크 계층: WAN에서 데이터 전송

라우터를 통해 서로 다른 네트워크 간의 통신을 하는 계층.

설명만 보면 데이터 계층과 네트워크 계층이 무슨 차이인지 감이 잘 안 온다.
둘을 비교하면 다음과 같다.

2단계 데이터 (링크) 계층3단계 네트워크 계층
통신 대상하나의 네트워크 안에서 네트워크 장비 간의 통신여러 개의 네트워크 간의 통신
장비허브, 스위치라우터
주소MAC 주소 (어느 컴퓨터)IP 주소 (어느 네트워크의 어느 컴퓨터)
캡슐화이더넷 헤더를 붙인 프레임IP 헤더를 붙인 IP 패킷

여기서 IP는 Internet Protocol의 약자로, 어느 네트워크의 어느 컴퓨터인지를 지정하는 주소이다.

데이터 계층에서 MAC 주소를 넣은 '이더넷 헤더'를 붙여 '프레임'을 만든 것처럼, 네트워크 계층에서도 IP 주소를 넣은 'IP 헤더'를 붙여 'IP 패킷'을 만든다.

IP 주소

IP 주소는 '공인 IP 주소'와 '사설 IP 주소'로 나뉜다.
공인 IP 주소는 인터넷 서비스 제공자 (ISP)가 인터넷에 직접 연결되는 라우터/컴퓨터에 할당하는 주소이고,
사설 IP 주소는 라우터에 연결된 랜 내부에서 랜 네트워크 관리자가 할당하는 주소이다. 라우터의 DHCP (Dynamic Host Configuration Protocol)를 이용해서 자동으로 할당하기도 한다.

워낙 컴퓨터가 많다보니 IP 주소가 모자라서 이렇게 한 것. 참고로 모자란 건 IPv4 기준이고, (32비트, 만들 수 있는 주소 43억 개) 그걸 보완하려고 IPv6를 만들었다. 이건 128비트라서 340조의 1조 배의 1조 배...라고 한다.

IP 주소는 왜 192.168.X.XX... 이렇게 생겼을까?
32비트의 IPv4 주소를 여덟 자리씩 끊어 총 네 개의 십진수로 표현해서 그렇다. 예를 들어 IP 주소가 1100000010101000.... 이런 모양이면 이걸 여덟 자리씩 끊는다. 11000000/10101000/... 이렇게 끊은 구간을 십진수로 변환해서 192.168.1.10 이런 식으로 표현하는 것.

2024-08-15 <네트워크>

서브넷

  1. 네트워크 ID, 호스트 ID
    IP 주소는 네트워크 ID와 호스트 ID 두 개로 구성이 된다. 위에서 IP 주소를 여덟 자리씩 끊어 총 네 개의 구간으로 나눈다고 했는데, 이 때 앞의 일부는 네트워크 ID, 나머지는 호스트 ID가 된다.

    이 때 몇 개를 나누어 가지느냐에 따라 '클래스'가 정해진다. 네트워크 ID가 앞의 하나이면 A 클래스, 두 개이면 B 클래스, 세 개이면 C 클래스.

  2. 네트워크 주소, 브로드캐스트 주소
    네트워크 주소는 일종의 대표 주소이고, 브로드캐스트 주소는 해당 대표 주소 하위에 있는 모든 호스트에게 전송하기 위한 주소이다.
    네트워크 주소는 호스트 ID가 0이고, 브로드캐스트 주소는 호스트 ID가 255이다.

    예를 들어 192.168.1.1, 192.168.1.2,... 주소를 가진 컴퓨터는 모두 192.168.1.0 이라는 네트워크 하위에 속한다. 그리고 만약 누군가 192.168.1.255 브로드캐스트 주소로 데이터를 보내면 192.168.1.0 하위에 있는 모든 컴퓨터에 데이터가 전송이 된다.
    그래서 개별 컴퓨터는 자신의 호스트 ID를 0이나 255로 설정하지 않는다.

  3. 서브넷
    서브넷은 네트워크를 더 작은 규모로 분할하는 것을 말한다. 무슨 소리이냐면...
    C 클래스는 네트워크 ID가 24비트, 호스트 ID가 8비트이다. 즉 호스트를 총 2^8=256개를 설정할 수 있다는 뜻이다. 하지만 그 공간에 컴퓨터가 256개보다 적으면 그만큼 호스트 ID를 낭비하게 된다.
    그래서 이 낭비를 막기 위해 호스트 ID에서 일부 비트를 빌려 네트워크 ID로 사용하고, 이렇게 빌려온 비트로 만든 네트워크를 '서브넷'이라고 한다.
    위의 경우에서 호스트 ID에서 3비트를 빌리면 2^3=8개의 작은 서브넷을 구성할 수 있게 되고, 각 서브넷은 남은 5비트를 이용해 2^5=32개의 호스트를 가질 수 있다.
    이런 식으로 사용자의 상황에 맞게 네트워크를 서브넷으로 만들어 효율적으로 IP 주소를 쓸 수 있다. (어떻게든 방법을 찾는 저 발상... 대단하다)

    서브넷 마스크
    다만 이렇게 분할하면 어디부터 어디까지가 네트워크 ID이고 호스트 ID인지 분간하기가 어려워진다. 그래서 이걸 알려주는 게 서브넷 마스크.
    말 그대로 네트워크면 1, 호스트면 0으로 마스킹한다. 예를 들어 32비트 중 첫 25비트가 네트워크/뒤의 7비트가 호스트이면 → 11111111.11111111.11111111.10000000 이렇게 표현하는 것이다. 이걸 십진수로 바꾸면 255.255.255.128.

2024-08-21 <네트워크>

라우터

라우터는 네트워크 간 통신을 가능하게 한다. 3단계 설명이 '라우터를 통해 서로 다른 네트워크 간의 통신을 하는 계층'이었던 만큼 가장 중요한 장비이다.

  1. 라우터가 하는 일
    라우터는 네트워크를 여러 개로 분리하고, 다른 네트워크와 송수신할 때 최적의 경로를 찾아 보내고/받는 역할을 한다 (라우팅). 라우팅 과정에는 네트워크 경로를 찾는 일 뿐만 아니라 트래픽 관리, IP 주소 변환도 포함된다.
  2. 무슨 말인지 모르겠다!
    IP 주소를 분리해주고, 분리한 주소를 이용해서 네트워크 간의 통신을 해주는 것이다.

    이런 상황을 가정해보자. 라우터 A가 인터넷이랑 연결이 되어있고, 라우터 B와 C는 라우터 A에 연결이 되어있다.
    (1) 라우터 A는 외부 IP와 내부 IP를 분리해서 관리한다. (외부 IP 주소는 ISP에서 공급받은 것)
    (2) 라우터 A는 192.168.0.1을 각각 192.168.1.1과 192.168.2.1로 분리해서 라우터 B, C에 나누어준다.
    (2) 라우터 B와 라우터 C는 각각 받은 IP 주소를 다시 분리해서 컴퓨터에게 각각 나누어준다.
  3. 저러면 어떻게 통신하나?
  • 3.1 첫 번째 컴퓨터가 인터넷과 통신하는 경우

    컴퓨터 192.168.1.2가 라우터 B에 요청 → 라우터 B가 요청을 보내는 IP를 192.168.1.1로 변경해 라우터 A에 요청 → 라우터 A가 외부 IP 203.0.113.5로 인터넷에 요청 → 인터넷이 203.0.113.5로 라우터 A에게 응답 → 라우터 A가 내부 IP 192.168.1.1로 라우터 B에게 전달 → 라우터 B가 응답을 컴퓨터 192.168.1.2로 전달.
  • 3.2 첫 번째 컴퓨터가 같은 라우터 B에 연결된 두 번째 컴퓨터와 통신하는 경우

    컴퓨터 192.168.1.2가 라우터 B에 요청 → 라우터 B가 자신의 서브넷 (192.168.1.X)에 있음을 인식해서 컴퓨터 192.168.1.3로 전달.
  • 3.3 첫 번째 컴퓨터가 다른 라우터 C에 연결된 세 번째 컴퓨터와 통신하는 경우

    컴퓨터 192.168.1.2가 라우터 B에 요청 → 라우터 B가 자신의 서브넷 (192.168.1.X)에 없음을 인식해서 라우터 A에 전달 → 라우터 A가 라우터 C로 전달 → 라우터 C가 컴퓨터 192.168.2.2로 전달.
  1. 3.2, 3.3은 스위치랑 헷갈린다?!


    앞에서 배운 스위치랑 연결된 모양은 비슷하지만 통신 방식이 다르다.
    스위치는 동일한 네트워크 안에서 (LAN) MAC 주소를 기반으로 프레이밍을 거쳐 2단계 통신을 하는 장비이고,
    라우터는 다른 네트워크 사이에서 IP 주소를 기반으로 라우팅을 거쳐 3단계 통신을 하는 장비이다.

왜 라우터는 내부 IP와 외부 IP를 구분하나?
1) IPv4가 모자라서 주소를 아끼려고
2) 내부 네트워크 구조를 숨겨서 (외부에는 내부 IP가 안 보임) 보안을 강화하려고

라우터 하나에 연결하는 대신 하위 라우터로 나누는 이유는?
1) 라우터 하나가 큰 네트워크를 관리하면 성능이 떨어져서
2) 라우터에 장애가 났을 때 위험을 분산하려고
3) 라우터 하나만 털리면 다 털릴 수도 있으니 보안을 강화하려고

2024-08-24 <인지심리 (UX)>

오늘은 UX 특강 듣는 날!

  1. 쾌락적 편집 (Hedonic Editing)
    • 긍정적인 내용은 따로따로 말한다. (예: 5만 원 혜택을 받았어요, 2만 원 혜택도 받았어요 > 7만 원 혜택을 받았어요)
    • 부정적인 내용은 합쳐서 말한다.
    • 합쳐서 부정적인 내용을 상쇄시킬 수 있으면 그렇게 한다. (예: 3만 원 벌었어요 > 5만 원 벌고 2만 원 썼어요)
    • 합쳐도 부정적인 내용이 더 크다면 차라리 긍정적인 것을 뒤에 말한다. (예: 5만 원 썼지만 2만 원 벌었어요 > 3만 원 썼어요)
  2. 손실 회피 (Loss Averstion)
    • 손실을 회피하려는 경향. (예: 지금 떠나면 10만 원 잃어요 > 1시간 더 하면 10만 원 더 얻어요)
  3. Affordance
    • 특정 행동으로 유도하는 패턴. (예: '취소' 버튼은 색 없음, '다음' 버튼은 색 있음)
  4. 선택 설계 (Choice Architecture)
    • 유도하려는 것을 default로 제공한다. (예: XX에 참여하지 않겠습니까? > XX에 참여하시겠습니까?)
    • 대체로 주어진 선택지 안에서 선택하려고 하기 때문에, 주고 싶지 않은 선택지는 숨긴다. (예: 멤버십 level 1~3 중에서 고르세요. > 멤버십에 가입하시겠습니까?)
    • 상대적으로 이득인 것처럼 보이는 미끼를 넣는다. (예: 온라인 구독 50달러/오프라인 구독 100달러/온+오프라인 구독 100달러 → 미끼 상품인 오프라인 구독은 아무도 하지 않고, 온+오프라인 구독을 선택한다. 반대로 미끼 상품을 제거하면 온라인 구독을 선택한다.)
    • 사람은 중간 급의 상품을 자주 선택한다. (예: 상대적으로 비싼 상품을 추가하면 중간급 상품이 더 많이 팔린다.)

2024-08-26 <네트워크>

4단계. 전송 계층: 데이터의 오류 점검

데이터를 올바르게 전달하였는지, 오류가 없는지 점검하는 계층

데이터를 전송하는 1~3 단계와 달리, 4단계는 이렇게 전송된 데이터가 올바르게 도착하는지를 확인한다. 크게 두 가지를 점검한다.

  1. 오류가 있는지?
  2. 전송된 데이터의 목적지가 어느 어플리케이션인지?
    그냥 보내기만 하면 동영상 데이터가 채팅 앱에 나와야 할지, 비디오 플레이어에 나와야 할 지 모른다. 이 때 전송 계층이 '포트 번호'를 확인해서 올바른 앱으로 보내준다.
    예를 들어 80은 HTTP, 443은 HTTPS, 25는 이메일 (SMTP)... 등이다.

전송 계층은 위를 점검할 때 상황에 맞게 연결형 통신과 비연결형 통신 중 하나를 선택한다.

연결형 통신비연결형 통신
프로토콜TCPUDP
우선 순위정확성효율성
예시전화 (쌍방)문자 (일방)
통신 방식시작 → "지금 통화 되나요?" → "네" → "XXX 입니다" → "네 이해했습니다" → "네 확인했습니다" → 종료시작 → "XXX 입니다" → 종료

2024-08-29 <네트워크>

TCP

TCP는 정확도를 중시하는 연결형 통신 프로토콜이다. 데이터 통신 전에 연결이 잘 되었는지, 데이터가 잘 전달되었는지, 통신이 끝나면 연결이 잘 끊어졌는지 확인하는 절차를 거친다.

  1. 3-way Handshake (연결 확립)
    통신하기 전에 두 컴퓨터의 연결을 확립하는 과정이다. 3-way라고 부르는 이유는 아래의 세 번의 과정을 거치기 때문이다.
    • 발신자가 수신자에게 "SYN"(동기화) 메시지를 보낸다.
    • 수신자가 "SYN-ACK"(동기화 승인) 메시지로 응답한다.
    • 발신자가 "ACK"(승인) 메시지로 응답한다.
  2. Acknowledgments (도착 확인)
    • 발신자가 세그먼트를 보낸다. (세그먼트: TCP 헤더를 붙인 데이터 패킷)
    • 수신자가 수신한 모든 세그먼트에 대해 "ACK" 메시지를 보낸다.
    • 만약 발신자가 일정 시간 내에 "ACK"를 받지 못하면 세그먼트가 손상되었다고 가정하고 다시 보낸다.
  3. 4-way Handshake (연결 종료)
    통신이 끝난 후 연결을 종료하는 과정이다.
    • 발신자가 수신자에게 "FIN" (연결 종료 요청) 메시지를 보낸다.
    • 수신자가 발신자에게 "ACK" (연결 종료 요청 확인) 메시지를 보낸다.
    • 수신자도 발신자에게 "FIN" 메시지를 보낸다.
    • 발신자도 수신자에게 "ACK" 메시지를 보내면서 연결을 완전히 종료한다.

왜 4-way까지 하나? FIN 보내면 바로 끊으면 되잖아
아직 보낼 데이터가 남아있을 수 있기 때문이다.
"다 보냈으니까 FIN 보낸 거 아니야?" 라고 생각할 수도 있지만, 여기서 '발신자'와 '수신자'라고 써서 그렇지 실제로는 둘 다 데이터를 보낼 수 있기 때문이다.
그래서 A가 "나 다 보냈어. 끊어도 돼." 라고 할 때 B는 "알았어... 근데 나는 아직 덜 보냈어." 같은 상황 때문에 서로 FIN 요청을 보내는 것.

2024-08-30 <네트워크>

TCP 헤더

위에서 TCP 헤더를 붙인 데이터 패킷을 '세그먼트'라고 언급했다.
TCP 헤더 안에는 여러 숫자가 있는데, 각각 데이터 전송 과정에서 아래의 역할을 한다.

명칭역할비유
일련번호 sequence num세그먼트의 순서를 식별하는 번호. 하나의 데이터가 여러 세그먼트로 쪼개져서 보내지기 때문에, 각 세그먼트가 몇 번째인지 알기 위해 사용한다.낱장 단위로 보내는 편지의 페이지 번호
확인 응답 번호 ack. num세그먼트가 올바르게 수신되었는지 확인하는 번호. 수신자가 데이터의 seq. num을 보고, 발신자에게 다음에 받고 싶은 seq. num을 ack. num으로 보낸다."편지 1~10 페이지 받았어요. 다음에는 11 페이지부터 보내주세요."
window size수신자가 받을 수 있는 세그먼트의 최대 용량. 매번 세그먼트를 주고 받을 때마다 요청-응답을 하면 너무 오래 걸리기 때문에, 수신자가 최대로 받을 수 세그먼트 용량을 미리 파악한다. 이러면 그 용량을 넘지 않게 여러 세그먼트를 연달아 보낼 수 있다.최대 50장까지 받을 수 있는 우편함이 있으면, 1~10페이지, 11~20페이지, ... 41~50페이지는 ack. num을 받기 전에도 연달아 보낼 수 있다.
port num데이터의 목적지 (어플리케이션)를 식별하는 번호. 해당 데이터가 어느 어플리케이션으로 가야 하는지 알려준다. (전송 계층은 이런 역할까지 한다!)아파트 (수신자)에 살고 있는 주민의 집 호수 (포트).

0개의 댓글