Programming/Network

인터넷 네트워크

히히심 2024. 11. 23. 15:08
728x90

1. 인터넷 네트워크

인터넷에서 서로 다른 컴퓨터들이 어떻게 통신할까?

 

2. IP (인터넷 프로토콜)

서로 다른 컴퓨터들이 통신하기 위해 IP 주소를 부여한다.

- 지정한 IP 주소에 데이터를 전달하고, 패킷이라는 통신 단위로 데이터를 전달하게 된다.

 

- IP 패킷 정보에는 출발지 IP, 목적지 IP등과 함께 전송 데이터를 넣어 전달한다. 

 

 

3. IP 프로토콜의 한계 

1) 비연결성 : 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송

2) 비신뢰성 : 중간에 패킷이 사라지거나 (패킷 소실), 패킷이 순서대로 도착하지 않는 경우

3) 프로그램 구분 : 같은 IP를 사용하는 서버에서 여러 개의 애플리케이션과 통신하는 경우 구분이 어렵다.  

 

==> 이러한 문제들을 해결해주는 게 바로 TCP 프로토콜

 

4. TCP / UDP

- 프로토콜 계층

ex) 채팅 프로그램으로 hello world라는 메시지를 전송하고 싶을 때 ? 

1) 소켓 라이브러리를 통해 OS 계층에 hello라는 메시지를 전달한다. 

2) 이 메시지 데이터를 포함한 TCP 정보를 생성하고

3) 이 TCP 데이터를 포함한 IP 패킷을 생성한다. 

4) 이를 랜카드를 통해 나갈때 이더넷 프레임과 함께 나간다. 

 

- TCP/IP 패킷 정보

: 출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보 등을 포함

 

- TCP의 특징 (전송 제어 프로토콜 Transmission Control Protocol)

  • 연결 지향 - TCP 3 way handshake (가상 연결)

클라이언트에서 서버에게 SYN이라는 메시지를 보내고, 

서버에서는 받았다 + 연결해주라는 의미에서 SYN+ACK을 보내고,

클라이언트에서 받았다는 의미에서 ACK를 보낸다. 

총 세번 메시지를 주고받고 연결이 되었다는 것을 인식하게 된다. 그 이후에 데이터를 전송하게 된다. 

 

만약 서버가 꺼져있었다면 SYN 메시지를 보냈을 때 서버에서 응답이 없으므로 연결되지 않는다. 

 

 

 

  • 데이터 전달 보증 : 데이터 전송 후 서버에서는 데이터 전달에 대한 응답을 해주므로 전달에 대한 보증이 된다. 
  • 순서 보장 : 순서가 잘못 도착하면 서버 측에서 다시 보내라고 응답한다. 
  • 신뢰할 수 있는 프로토콜
  • 현재는 대부분 TCP 사용

 

- UDP 프로토콜의 특징 (사용자 데이터그램 프로토콜 User Datagram Protocol)

  • 하얀 도화지에 비유 (기능이 거의 없음)
  • 연결지향, 데이터 전달 보증, 순서 보장 X
  • 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
  • IP와 거의 같지만, PORT, 체크섬 정도만 추가된 것 
  • 애플리케이션에서 추가 작업 필요
  • TCP는 손대지 못하고, UDP에서 손을 대서 최적화할 수가 있다. (이러한 면에서 요즘 각광받고 있다!)

 

5. PORT

** 만약 클라이언트 PC가 여러 개의 서버와 통신을 해야한다 (게임+화상통화+웹브라우저 서칭...) 면 해당 패킷들만으로는 구분이 불가능하다. 이를 구분하기 위해서는 PORT가 필요.

ex) 웹 브라우저 요청 시 80 포트로 보내고, 서버에서 해당 IP에 응답 시 10010포트로 보내준다. (이는 패킷에 정보가 들어가 있다)

like 아파트(IP) + 몇 동 몇 호 (PORT)

 

6. DNS (도메인 네임 시스템 Domain Name System)

** IP는 기억하기 어렵고, 변경 가능성이 있다.  => 그래서 DNS가 있다. 도메인 명을 등록하고 이를 IP 주소로 바꿔줄 수가 있다. 

-> DNS 서버에 도메인을 등록하고, 해당 도메인의 IP 주소를 찾을 수가 있다. 

 

 

 

 

 

 


** 해당 내용은 김영한님의 강의를 수강하며 정리한 것입니다.

https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard

 

모든 개발자를 위한 HTTP 웹 기본 지식 강의 | 김영한 - 인프런

김영한 | 실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., [사진] 📣 확인해주세요!본 강의는 자바 스프링 완전 정복 시리즈의 세 번째 강의입니다. 우아한형제들 최연

www.inflearn.com

 

728x90