CS

1. 인터넷 네트워크

wooweee 2023. 4. 16. 10:26
728x90

1. 인터넷 통신

  • 복잡하게 통신

 

 

 

2. IP(internet protocal)

  • 역할
    • 지정한 IP주소에 데이터 전달
    • 패킷이라는 통신 단위로 데이터 전달
      • 패킷: 출발지 IP, 목적지 IP 등등으로 전송할 데이터를 감싼 형태

 

  • 클라이언트가 패킷을 서버에 전달하고 (전달받은 서버는 패킷을 버리고 데이터만 확인)
  • 서버도 패킷으로 감싸서 보낼 정보를 전달

 

  • 한계
    1. 비연결성 : 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
    2. 비신뢰성: 중간에 패킷이 사라진지, 패킷이 순서대로 온지 알수 없음
    3. 프로그램 구분: 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상일 때 구분하는 방법

 

3. TCP, UDP

 

  • TCP: IP의 한계점을 개선해줌, 시장점유율이 높다.
  • UDP: 큰 도움을 주지 않지만 도움을 준다. http3.0 부터 권장하는 추세

 

 

프로토콜의 4계층

 

  • 패킷정보
    • IP패킷 정보: 출발지 IP, 목적지 IP
    • TCP패킷 정보: 출발자 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보

    • PORT: 0 ~65535 할당 가능. 0~1023은 쓰지말 것. http - 80 https - 443 할당(서버기준 할당)
    • 프로세스 = 프로그램이 작동하고 있는 상태

port: 같은 IP 내에서 프로세스 구분

 

 

 

  • TCP 특징
    1. 연결지향 - TCP 3 way handshake(가상연결): 연결을 한 후 message 보냄 (server의 on/off 확인 가능)
      • TCP 3way
        1. client -> server:   SYN(접속요청)
        2. server -> client:   SYN+ACK(접속요청, 요청 수락)
        3. client  -> server:  ACK(요청 수락과 함께 데이터 전송 가능)

    2. 데이터 전달보증

    3. 순서 보장

    4. 신뢰할 수 있는 프로토콜

    5. 현재는 대부분 TCP 사용

  • UDP 특징
    1. 연결지향 - TCP 3 way handshake X, 데이터 전달 보증 X, 순서 보장 X  = 기능이 거의 없다. 하지만 단순하고 빠르다.
    2.  IP와 거의 같고 PORT, 체크섬 정도만 추가
      애플리케이션에서 추가 작업 필요 (빨라서 요즘 뜨는 추세, 그래도 시장 점유율은 아직까지 TCP가 97% 정도 된다.)

 

 

4. port

  1. 1개의 pc에서 여러 서버를 띄울 때 http웹서버를 띄우면 80 port 값(default) 가진다. 
    또다른 http웹서버를 띄우면 이땐 80 말고 다른 port를 이용 해야한다.
    • ex) localhost 8080 서버를 띄우고 localhost 8081 서버를 또 띄울 수 있다.
  2. client쪽에서 요청할 때 client의 port는 동적으로 결정(= random 배정)

 

  • 웹 서버 중 http 통신 규약을 쓰는 server들은 80 port를 사용 - google, naver
    • 통신 규약이 ftp 같은 경우는 port가 20, 21로 고정되어있다.
  • 각 프로세서들이 동일한 port를 가져도 client에서 보내는 출발 port가 동적으로 각각 process마다 다르게 보내지므로 문제가 없다.
  • 그렇다고 google, naver 같은 웹서버들이 무조건 80을 사용해야하는 것이 아니다. 자신이 원하는 port 번호로 변경이 가능하다.
    하지만 80 이외의 port 번호를 사용시 uri 접속시 port 번호를 필수로 지정해야한다.

 

  • port는 큰 묶음으로 봐야 이해가 쉽다.
    • naver 서버, google 서버 이런식으로 보면 안된다.
    • 웹서버, 게임서버, 미디어 서버든 조금더 큰 분류로 이해

 

  • 서버에 지정된 번호
    • 웹서버
      • http 통신하는 서버 - 80
      • ftp로 통신하는 서버 - 20
      • localhost로 개발 연습하는 서버 - 따로 없음
    • 게임 서버
    • 미디어 서버

 

  • 이제 각 애플리케이션 서버로 봤을 때
    • 내 앱이 http로 통신한다하면 default로 80 port를 가지고 바꾸고 싶으면 바꿔도 된다.
    • 내가 앱을 2개 이상 한 컴퓨터에 돌리고 싶은데 2개다 http 웹서버로 동작하고 싶으면 하나는 무조건 다른 port로 지정해야함
      -> 이런 경우, 요청이 여러개 올 때 어느 곳으로 가야할지 모름 그래서 port로 구분 필요

 

 

5. DNS

  • IP주소 기억이 어렵고, IP가 변경될 수도 있기 때문
  • 전화번호부, 도메인 명을 IP주소로 변환

 

 

 

 

 

 

 

 

 

 

다음 발행글: 2. URI & Web browser

 

 

 


출처: 모든 개발자를 위한 HTTP 웹 기본 지식