# 네트워크와 통신

> **이 장에서 배우는 것**
> 컴퓨터끼리 어떻게 서로를 찾는지, `localhost:27777` 이 무슨 뜻인지, 그리고
> 사내망·방화벽이 왜 자꾸 걸림돌이 되는지.

## 통신은 주소 찾기입니다

편지와 구조가 같습니다. **주소가 있어야 도착합니다.**

| 인터넷 | 편지 |
|---|---|
| IP 주소 | 건물 주소 |
| **포트** | 몇 호실 |
| 도메인 이름 | 건물 이름("○○빌딩") |
| DNS | 건물 이름 → 주소를 찾아주는 안내소 |

## IP 주소 — 건물

```
192.168.0.15      집·회사 안에서만 통하는 주소 (사설)
203.0.113.7       인터넷 전체에서 통하는 주소 (공인)
127.0.0.1         나 자신 — 이 컴퓨터
```

**마지막 줄이 중요합니다.** `127.0.0.1` 은 "지금 이 컴퓨터"를 가리키는 약속된
주소이고, `localhost` 는 그 별명입니다. 즉 **`localhost` 로 시작하는 주소는 밖에
나가지 않습니다.** 내 컴퓨터 안에서만 오갑니다.

## 포트 — 몇 호실

한 컴퓨터가 여러 프로그램을 동시에 돌립니다. 그래서 주소만으로는 부족하고
**번호**로 나눕니다. 그것이 포트입니다.

```
localhost : 27777
└───┬───┘   └─┬─┘
 어느 컴퓨터  어느 프로그램
```

| 포트 | 흔히 쓰는 곳 |
|---|---|
| 80 | 웹(HTTP) — 생략되는 기본값 |
| 443 | 보안 웹(HTTPS) — 생략되는 기본값 |
| 3000 · 5432 · 27777 | 각 프로그램이 정한 번호 |

**`http://example.com` 에 포트가 안 보이는 이유**는 443(또는 80)이 기본값이라
생략되기 때문입니다. `27777` 처럼 낯선 번호가 붙어 있으면 "기본이 아닌
프로그램"이라는 뜻입니다 — [처음 켜고 접속하기](/guide/ht-first-run)의
`localhost:27777` 이 그것입니다.

> **"포트가 이미 사용 중입니다"** 는 그 호실에 이미 다른 프로그램이 들어
> 있다는 뜻입니다. 같은 프로그램을 두 번 켰거나, 다른 프로그램이 같은 번호를
> 쓰고 있습니다.

## 도메인과 DNS

숫자 주소는 외우기 어려우니 이름을 붙입니다.

```mermaid
graph TD
  A["hyperteams.net 을 입력"] --> B["DNS에 물어봄<br/>'그 이름의 주소가 뭐죠'"]
  B --> C["203.0.113.7 을 받음"]
  C --> D["그 주소로 접속"]
```

**주소는 그대로 두고 이름이 가리키는 곳만 바꿀 수 있습니다.** 서비스가 서버를
옮겨도 사람들이 쓰는 주소는 안 바뀌는 이유입니다. 반대로 DNS가 바뀌면 **퍼지는
데 시간이 걸립니다**(몇 분~몇 시간) — 도메인을 바꾼 직후 어떤 사람은 새 곳,
어떤 사람은 옛 곳으로 가는 일이 여기서 생깁니다.

## 사내망과 방화벽

회사 네트워크는 대개 **밖에서 안으로 들어오는 것을 막습니다.** 이것이 방화벽이고,
막는 게 정상 동작입니다.

| 방향 | 보통 |
|---|---|
| 안 → 밖 (웹 서핑, API 호출) | 열려 있음 |
| **밖 → 안** (내 컴퓨터로 접속) | **막혀 있음** |

그래서 내 컴퓨터에서 도는 하이퍼팀즈(HyperTeams)를 **밖에서** 열려면 별도의 길이
필요합니다. [어디서나 접속하기](/guide/ht-remote-access)의 터널이 그
길입니다 — 방화벽에 구멍을 뚫는 것이 아니라, **안에서 밖으로** 연결을 먼저 걸어
그 통로를 되쓰는 방식입니다.

```
✗ 방화벽을 열어달라고 요청       → 보안팀이 거절하는 것이 정상입니다
✓ 안에서 밖으로 나가는 통로를 이용  → 터널이 이 방식입니다
```

## 왜 가끔 느린가

| 말 | 뜻 | 체감 |
|---|---|---|
| **대역폭** | 한 번에 나르는 양 | 큰 파일 전송 속도 |
| **지연(latency)** | 한 번 왕복에 걸리는 시간 | 반응이 굼뜬 느낌 |

**AI 응답이 느린 것은 대개 지연이 아니라 모델이 생각하는 시간**입니다. 회선을
바꿔도 안 빨라지는 이유입니다.

## 자주 하는 오해

### "localhost 주소를 동료에게 보내면 되나요"

**안 됩니다.** `localhost` 는 "그 사람의 컴퓨터"를 가리킵니다. 동료가 그 주소를
열면 자기 컴퓨터를 찾다가 실패합니다. 밖에서 접속하려면
[터널](/guide/ht-remote-access)이 필요합니다.

### "와이파이가 되는데 왜 접속이 안 되나요"

인터넷 연결과 **그 포트가 열려 있는가**는 다른 문제입니다. 회사 네트워크가
특정 포트만 막아둔 경우가 흔합니다.

---

## 확인

**1. `localhost:27777` 에서 앞뒤가 각각 뜻하는 것은?**

<details>
<summary>답</summary>

`localhost` 는 **이 컴퓨터 자신**, `27777` 은 **그 안에서 어느 프로그램**인지를
가리키는 포트 번호입니다.
</details>

**2. 웹 주소에 포트 번호가 잘 안 보이는 이유는?**

<details>
<summary>답</summary>

**443(HTTPS)·80(HTTP)이 기본값이라 생략되기 때문**입니다. 낯선 번호가 붙어
있으면 기본이 아닌 프로그램이라는 뜻입니다.
</details>

**3. 회사 방화벽을 열지 않고 밖에서 내 컴퓨터에 접속하는 방법은?**

<details>
<summary>답</summary>

**안에서 밖으로 먼저 연결을 걸어 그 통로를 되쓰는 것** — 터널입니다. 방화벽은
보통 밖에서 안으로 들어오는 것만 막습니다.
</details>

---

다음은 그 주소 끝에 있는 것의 정체입니다 →
[서버 · 클라이언트 · 클라우드](/guide/it-server)
