yooniiverse
개발 블로그
yooniiverse
전체 방문자
오늘
어제
  • 분류 전체보기
    • 운영체제
    • 네트워크
    • ~2023.02
      • 외부교육
      • 대외활동
      • 스터디
      • 동아리
      • TIL
      • IT지식
      • 기타
      • 트러블 슈팅
      • 프로그래밍
      • Python
      • Java
      • JS
      • DB(SQL)
      • JSP
      • Spring
      • 기술면접
      • 자바
      • 코딩테스트
      • 자료구조
      • 알고리즘
      • 백준 문제풀이
      • 인공지능
      • 머신러닝
      • 프로젝트
      • 안드로이드 앱개발
      • 웹개발
      • 웹 서비스
      • 웹퍼블리싱
      • Node.js 백엔드 개발
      • CS
      • 1일 1CS지식
      • 운영체제
      • 네트워크
      • 데이터베이스
      • 정보처리기사
      • 도서 리뷰
      • 개발 관련 도서
      • 기타 도서

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
yooniiverse

개발 블로그

~2023.02/네트워크

01_인터넷 네트워크

2022. 10. 31. 17:51

목차


  • 인터넷 통신
  • IP(인터넷 프로토콜)
  • TCP, UDP
  • PORT
  • DNS

 

인터넷 통신


클라이언트에서 서버로 Hello, world 라는 코드를 보내려고 한다. 복잡한 인터넷 망에서 어떻게 정확한 곳으로 메시지를 보낼 수 있을까?

 

IP(인터넷 프로토콜)


바로 IP 주소를 통해 가능해진다.

IP(인터넷 프로토콜)의 역할은 1) 지정한 IP 주소에 데이터를 전달, 2) 패킷(Packet)이라는 통신 단위로 데이터 전달 이다.

IP 패킷의 정보는 출발지 IP, 목적지 IP 등이 있다. 전송할 데이터를 패킷으로 감싸서 인터넷 망으로 던지는 것이다. 클라이언트의 메시지가 제대로 서버에 전달되면 서버도 서버 패킷을 전달한다.

 

IP 프로토콜에는 한계도 존재하는데 다음과 같다.

비연결성  패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷이 전송된다.
비신뢰성  중간에 패킷이 사리지거나 패킷이 순서대로 안오는 경우도 존재한다.
프로그램 구분  같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상일 수도 있다.

 

TCP, UDP


IP 프로토콜의 한계를 해결해주는 것이 바로 TCP이다.


인터넷 프로토콜 스택의 4계층은 다음과 같다.

애플리케이션 계층 - HTTP, FTP
전송 계층 - TCP, UDP
인터넷 계층 - IP
네트워크 인터페이스 계층
애플리케이션 웹 브라우저 / 네트워크 게임 / 채팅 프로그램  1. 프로그램이 Hello, world 메시지 생성
 SOCKET 라이브러리   2. SOCKET 라이브러리 통해 전달
OS  TCP   3. TCP 정보 생성, 메시지 데이터 포함
 IP(Internet Protocol)   4. IP 패킷 생성, TCP 데이터 포함
네트워크 인터페이스  LAN 드라이버   5. LAN 카드를 통해 인터넷을 거쳐 서버로 전달 됨
 LAN 장비 

위에서 IP 패킷에는 전송 데이터에 더불어 출발지 IP, 목적지 IP 등의 정보가 있다고 했다.

TCP/IP 패킷 정보에는 전송 데이터, 출발지 IP, 목적지 IP 등에 더불어 출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보가 추가된다. (TCP 세그먼트)


TCP(전송 제어 프로토콜, Transmission Control Protocol)의 특징은 다음과 같다.

연결지향 - TCP 3 way handshake (가상 연결) 연결을 먼저 하고 메시지를 전달한다.
데이터 전달 보증 메시지를 전달했는데 중간에 패킷이 누락되면 이를 알 수 있다.
순서 보장 클라이언트에서 패킷1, 패킷2, 패킷3 순서로 전송하였으나 서버에 패킷1, 패킷3, 패킷2 순서로 도착한 경우, 서버는 클라이언트에 패킷2부터 다시 보내달라고 요청할 수 있다.
신뢰할 수 있는 프로토콜  
현재는 대부분 TCP 사용  

UDP(사용자 데이터그램 프로토콜, User Datagram Protocol)의 특징은 다음과 같다.

하얀 도화지에 비유 (기능이 거의 없음) 연결지향 - TCP 3 way handshake (X)
데이터 전달 보증 (X)
순서 보장 (X)
데이터 전달 및 순서가 보장되지 않지만,
단순하고 빠름
 
정리 IP와 거의 같다. (PORT, 체크섬 정도만 추가)
애플리케이션에서 추가 작업이 필요하다.

UDP는 왜 사용하는 것일까? TCP는 3 way handshake를 사용하는 과정에서 시간이 소요된다. 또한 데이터 양도 크고 전송 속도도 더 빠르게 만들기가 어렵다. 이미 규칙이 정해져 있기 때문이다. 더 최적화를 하고 싶어도 할 수가 없는 것이다.

즉, 더 최적화를 하고 싶으면 TCP는 그대로 두고, 애플리케이션 레벨에서 UDP에 손을 대면 된다.

 

PORT


한 번에 둘 이상을 연결해야 한다면 어떻게 해야 할까? 위에서 TCP 세그먼트에는 출발지 PORT와 목적지 PORT가 있다고 했다. 이것이 이 문제를 해결해 준다.

PORT는 같은 IP 내에서 프로세스를 구분할 수 있게 해준다.

 

PORT는 보통 0부터 65535까지 할당이 가능하다. 그러나 0부터 1023까지는 잘 알려진 포트라고 하여 사용하지 않는 것이 좋다.

FTP 20, 21
TELNET 23
HTTP 80
HTTPS 443

 

DNS


IP는 사실 기억하기가 어렵다. 또한 변경될 수도 있다.

DNS(도메인 네임 시스템, Domain Name System)은 중간에서 전화번호부와 같은 서버를 제공해 준다. 그래서 도메인 명을 등록하고 IP 주소로 바꿀 수 있다.

 

예를 들어 DNS 서버에 도메인 명 google.com은 IP 주소가 200.200.200.2라고 등록을 해두는 경우를 생각해보자.

클라이언트에서 DNS 서버에 도메인 명 google.com을 요청하면 DNS 서버는 200.200.200.2라는 IP 주소를 응답해 준다.

결국 서버에 200.200.200.2로 접속을 하게 되는 것이다.

 

'~2023.02 > 네트워크' 카테고리의 다른 글

서버와 네트워크 구성  (0) 2023.01.04
00_강의 선정과 목차 소개  (0) 2022.10.31
    '~2023.02/네트워크' 카테고리의 다른 글
    • 서버와 네트워크 구성
    • 00_강의 선정과 목차 소개
    yooniiverse
    yooniiverse

    티스토리툴바