본문 바로가기

CS

[CS정리] 네트워크

웹 동작 방식

 

 

  1. 사용자가 브라우저에 URL을 입력
  2. 브라우저는 DNS 서버를 조회해 서버의 IP정보를 얻어온다
  3. HTTP 프로토콜을 사용해 HTTP 요청 메세지를 생성하고, TCP/IP 연결을 통해 HTTP 요청이 웹 서버로 전송
  4. 서버는 HTTP 프로토콜을 활용해 HTTP 응답 메세지를 생성하고, 요청한 컴퓨터로 전송
  5. 도착한 HTTP 응답 메세지를 해석해 HTML을 화면에 랜더링하여 사용자가 볼 수 있도록 한다

 

TCP & UDP

TCP(Transmission Control Protocal, 전송제어 프로토콜)

 

 

  • 연결 지향형 서비스, 3-way handshaking 과정을 통해 연결을 설정
  • 높은 신뢰성을 보장하지만 속도가 느림, 순차적인 전달을 하며, 신뢰할 수 있는 전송을 보장한다

UDP(User Datagram Protocol, 사용자 데이터그램 프로토콜)

 

 

  • 비연결형 프로토콜, 3-way handshaking을 사용하지 않기 때문에 신뢰성 ⬇️
    But, 속도가 빠르다!
  • IP 데이터그램을 캡슐화하여 보내는 방법과 연결설정을 하지 않고 보내는 방법을 제공
  • UDP 흐름제어, 오류제어 또는 손상된 세그먼트 수신에 대한 재전송❌
    • 모두 사용자 프로세스의 몫
  • UDP가 행하는 것은 포트들을 사용하여 IP프로토콜에 인터페이스를 제공하는 것
  • 만약 요청 또는 응답이 손실되면 클라이언트는 time out. 다시 시도하면 된다!
  • 코드가 간단. TCP처럼 초기설정시 요구되는 프로토콜보다 적은 메세지 요구
  • UDP를 사용한 것 중 DNS가 존재
    • 호스트 네임의 IP 주소를 찾을 필요가 없는 프로그램은 DNS 서버로 호스트 네임을 포함한 UDP 패킷을 보냄
    • 해당 서버는 호스트의 IP 주소를 포함한 UDP 패킷으로 응답
    • 사전 설정이 필요없으며 해제가 필요하지 않음
  • 실시간성이 중요한 스트리밍에 자주 사용

 

3-Way-Handshake

연결 성립

 

 

  1. SYN(M) 패킷을 보냄
  2. 서버는 클라이언트의 요청인 SYN(M)를 받고, 클라이언트에게 요청을 수락한다는 ACK(M+1)과 SYN(N)이 설정된 패킷을 전송
  3. 클라이언트는 서버 수락 응답 패킷을 받아 ACK(B+1)을 보내면 연결이 성립(Establish)
❓ 만약 클라이언트가 SYN + ACK를 받지 못한다면?
클라이언트는 서버로 SYN을 보낸 뒤 시간을 재고, 만약 일정 시간동안 ACK + SYN가 오지 않으면 Time Out이 발생한다. 그러면 클라이언트는 다시 SYN를 보내고 응답을 대기

 

연결 해제(Connection Termination)

 

 

  1. 클라이언트가 연결을 종료하겠다는 FIN 플래그를 전송
  2. 서버는 클라이언트의 요청을 받고 알겠다는 확인 메세지 ACK를 보냄
  3.  데이터를 모두 보내고 통신이 끝나면 연결을 종료한다는 FIN 플래그를 전송
  4. 클라이언트는 FIN을 확인했다는 ACK를 보냄
  5. 클라이언트의 ACK 메세지를 받은 서버는 소켓 연결을 Close
❓ 서버에서 FIN을 전송하기 전의 패킷이 지연이나 유실로 인한 재전송으로 FIN보다 늦게 도착한다면?
클라이언트는 아직 서버로부터 받지 못한 데이터가 있을 것을 대비해 일정 시간동안 세션을 남겨 두고 잉여 패킷을 기다리는 과정을 거침(TIME_WAIT)

 

공인 IP & 사설 IP

공인 IP

  • 전 세계적으로 중복이 되지 않는 고유한 번호
  • 개인이 자유롭게 할당할 수 없고 ISP가 제공하는 IP주소
  • 외부에 공개되어 있기 때문에 인터넷에 연결된 다른 장비로부터 접근이 가능
  • IP주소는 수가 한정적이기 때문에 LAN과 같은 한정된 범위에서는 별도의 사설 IP주소를 할당하는 것이 일반적

사설 IP

  • 한정된 범위 내에서만 사용하는 IP주소
  • IPv4의 부족으로 모든 네트워크가 공인 IP를 사용하는 것이 불가능하기 때문에 네트워크 안에서 라우터를 통해 할당받는 가상의 주소
  • 외부의 공간은 이 주소를 사용해 통신이 불가능하고, NAT 등을 사용해 주소를 변환해 외부와 통신

'CS' 카테고리의 다른 글

[CS 정리] 운영체제 (3)  (0) 2021.01.14
[CS 정리] 운영체제 (2)  (0) 2021.01.07
[CS 정리] 운영체제 (1)  (0) 2021.01.07