Chrome

while true; do
	clear
	lsof -nP -a -p 62350 -i
	sleep 1
done

실제 chrome에서 나가는 네트워크를 확인하기 위해서 chrome 프로세스에서 사용하는 내부 네트워크 포트를 확인한결과 4개가 잡혔다.

내 포트목적지목적지 포트의미
5230174.125.203.1885228별도의 Google 계열 연결로 보임
52355172.217.209.102443HTTPS/TLS 연결
52363142.251.118.138443HTTPS/TLS 연결
52442172.217.209.95443HTTPS/TLS 연결
52328160.79.104.10443HTTPS/TLS 연결

하나의 프로세스에서 여러개의 네트워크 포트를 이용하고 있었습니다. 포트의 갯수는 우리가 얼마나 많은 사이트에 접속하는가 그리고 어떤 행위를 하는가에 따라서 달라집니다.

왜 chrome은 여러개의 포트를 사용할까?

Chrome은 웹사이트 하나만 열어도 실제로 하나의 서버에만 접속하는 것이 아니다.

웹 페이지를 구성하기 위해 HTML 서버뿐만 아니라 이미지, JavaScript, CSS, CDN, 외부 API 등 여러 서버와 통신할 수 있다.

이 과정에서 Chrome이 여러 서버와 TCP 연결을 요청하면 운영체제는 각각의 TCP 연결에 서로 다른 로컬 포트(Ephemeral Port)를 할당한다.

예를 들어 다음과 같다.

10.64.124.73:52355 → 서버 A:443
10.64.124.73:52356 → 서버 B:443
10.64.124.73:52357 → 서버 C:443

TCP 연결은 다음 4개의 값, 즉 4-Tuple로 식별된다.

Source IP
Source Port
Destination IP
Destination Port

따라서 여러 서버와 동시에 TCP 연결을 맺거나 동일한 서버와 여러 TCP 연결을 맺을 때 운영체제는 서로 다른 로컬 포트를 사용하여 각각의 연결을 구분할 수 있다.

또한 각각의 TCP 연결 위에서 TLS 연결이 형성될 수 있으며, 이 과정에서 TLS ClientHello와 ServerHello 등이 교환된다.

즉, 여러 포트를 사용하는 핵심 이유는 HTTPS 암호화 과정에서 오류가 발생하는 것을 방지하기 위해서가 아니라, 운영체제가 각각의 TCP 연결을 독립적으로 식별하고 관리하기 위해서이다.