네트워크 통신 흐름

Gi Lick·2023년 5월 9일
0

(출처 : https://better-together.tistory.com/39)

  1. 클라이언트가 HTTP요청을 보낸다.
  2. URL을 이용하여 Request Message를 만든다.
  3. 클라리언트는 DNS서버로 도메인 이름을 보내 IP를 조회한다.
  4. 클라이언트는 HTTP 요청 정보를 TCP/IP의 패킷에 담아 서버로 전송한다.
  5. 웹서버에서 패킷을 추출하여 메세지를 복구한 후 응답 메세지를 위와 같은 방식으로 다시 전달한다.

TCP/IP 란?

TCP 와 IP는 따로 봐야한다. IP통신 위에서 작동하는 TCP이기에 TCP/IP라고 하는 것이며, UDP/IP를 사용할 수 도 있다.

TCP의 경우는 통신을 시작하는 경우 3way handshake를 사용한다. 이는 통신이 잘 되는지를 확인하는 단계라고 볼 수 있다.

  1. 클라이언트가 웹서버에 SYN을 보내서 통신이 가능한지 확인한다. (이 때 포트가 열려있어야 한다.)
  2. 웹서버가 준비 되었으면 SYN/ACK를 보낸다.
  3. 클라이언트가 ACK를 보낸다.

TCP가 통신을 마치는 경우에는 4way handshake를 사용한다.

  1. 클라이언트가 FIN을 보낸다. (FIN-WAIT 1)
  2. 웹 서버가 확인하고 ACK를 보내고, 종료할 준비를 한다.
  3. 웹 서버가 종료하고 FIN을 보낸다.
  4. 클라이언트가 FIN을 확인하고 ACK를 보낸다.
  5. 클라이언틑 잠시동안 대기하는 시간을 가지고 (오류로 인해 지연된 패킷이 있을 수 있기 때문) 종료한다.

이러한 작동 로직(클라이언트와 웹서버의 소통) 때문에 TCP는 연결지향적 통신이라고 불린다.

이때 SYN number은 난수로 만들어져 보내지는데, 이것은 보안적인 측면이 강하다. 악의적인 이유를 가지고 다른 이의 통신을 추측하는 것을 막기 위함이다. ( SYN가 1이면 ACK는 SYN + 1 을 하여서 2를 반환한다.)

편지를 예시로 들면 IP는 주소라고 한다면, TCP는 배송추적이라고 할 수 있다.
IP는 정보를 따로 담고 있지 않지만,
TCP는 어느 장소에 어떤 속도로 어떻게 가고 있는 등 다양한 정보를 가지고 있기 때문이다. 심지어 받아서 답장을 보냈는지 까지도 알 수 있다.

반면 UDP는 배송추적이 안되는 택배 같다. 얼마나 정확하게 갔는지, 어떤 택배가 먼저 도착해야 하는지 중요한 것이 아니라 우선 배송이 끊임없이 계속 된다는 점에서 TCP와 차이가 있다.

Ps.잘못된 정보가 있다면 댓글 부탁드립니다... 더 많은 것을 배우고 공부하도록 하겠습니다.

profile
신입 개발자!@#$%^&*(

0개의 댓글