일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 서브쿼리
- SQL코테
- 논문리뷰
- LSTM
- 표준편차
- airflow
- 자연어 논문 리뷰
- inner join
- 자연어처리
- NLP
- t분포
- HackerRank
- 그룹바이
- 카이제곱분포
- MySQL
- sql
- 코딩테스트
- sigmoid
- Window Function
- nlp논문
- update
- SQL 날짜 데이터
- leetcode
- GRU
- 자연어 논문
- Statistics
- 짝수
- CASE
- torch
- 설명의무
- Today
- Total
HAZEL
[ 섹션 1. 인터넷 네트워크 ] 인터넷통신, IP, TCP/UDP, PORT, DNS 본문
여기서 사용하는 이미지 출처는 모두, 모든 개발자를 위한 HTTP 웹 기본 지식 인프런 수업의 이미지 입니다.
01. 인터넷 통신
인터넷에서 컴퓨터는 어떻게 통신할까 ?
만약, 클라이언트와 서버가 바로 옆에 있다면 케이블로 바로 연결 가능!
그러나, 클라이언트와 서버가 멀리 있다면?!
→ 인터넷 망을 통해서 메시지를 보내야한다!
→ 그러나 인터넷 망은 굉장히 복잡하다. 수많은 노드들이 존재하고, 그걸 뚫고 넘어가야한다.
→ 어떻게 뚫고 넘어가야하는지를 이해하려면, IP ( 인터넷 프로토콜 ) 에 대해서 이해해야 한다!
02. IP( 인터넷 프로토콜 )
1. IP 인터넷 프로토콜의 동작 방법
: 인터넷을 이용해서, 메시지를 전달하려고 할때는 IP 주소를 이용해야한다.
즉, 클라이언트와 서버가 주소를 부여 받는 것이다.
ex, 클라이언트 IP : 100.100.100.1 서버IP 는 200.200.2
2. IP ( 인터넷 프로토콜 ) 의 역할
- 지정한 IP 주소(IP Address)에 데이터 전달
- 패킷(Packet)이라는 통신 단위로 데이터 전달
메시지를 보낼 때, 그냥 보내는 것이 아니라, 패킷이라는 규칙이 있다.
전송데이터를 보낼때, 현재 클라이언트 ip , 목적지(서버) ip 와 메시지를 패킷으로 묶어서 던진다 !
그러면, IP 주소를 찾아가기 위해 서로 노드끼리 던짐 .
서버 또한 아이피 패킷을 만들어서, 클라이언트에 보내게 됨. ( 방향은 아래 그림과는 반대로 이동한다 )
하지만, 인터넷망은 복잡하기 때문에 클라이언트 패킷 전달할 때와, 서버 패킷 전달할 때의 노드의 길이 서로 다를 수 있다.
3. IP 프로토콜의 한계
1 ) 비연결성
패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송 - 클라이언트는 대상 서버가 패킷을 받을 수 있는 상태인지 모름
ex, 받아야하는 PC가 꺼져있는 경우
2) 비 신뢰성
- 중간에 패킷이 사라지는 경우
- 패킷이 순서대로 안올 수 있음
노드를 타다보면, 패킷이 서로 다른 노드로 이동할 수 있다. 그로 인해, 패킷의 순서가 변경 될 수 있다.
3) 프로그램 구분
- 같은 IP 를 사용하는 서버에서 통신하는 애플리케이션이 둘이상이라면 ?
ex, 인터넷 게임을 하면서, 인터넷으로 음악을 듣는 경우 ? 어떤식으로 구분하는가 ?!
이러한 한계를 해결하기 위해 TCP 프로토콜을 사용한다.
03. TCP / UDP
1. 인터넷 프로토콜 스택의 4계층
2. 프로토콜 계층
- 채팅 프로그램으로 메시지를 전달하고 싶을 때,
1 ) SOCKET 라이브러리를 이용해서, OS 계층에 메시지를 넘김
2 ) TCP 정보 ( 녹색 ) 를 씌움 - 그리고 밑으로 내림
3 ) 그다음, TCP 밖에 IP와 관련된 데이터를 씌움. 즉, IP 패킷이 생성됨
4 ) 네트워크 인터페이스를 통해 나갈때, Ethernet frame ( 물리적인 정보 ) 를 포함해서 나가게 됨.
** 패킷 : 패키지 ( 수화물 ) 것 과 덩어리를 뜻하는 버킷의 합성어이다.
3. TCP/IP 패킷 정보
1 ) IP 정보 : 출발지 IP, 목적지 IP, 기타
2 ) TCP 정보 : 출발지 PORT , 목적지 PORT, 전송제어, 순서, 검증 정보 ..
→ IP만으로 해결이 안됬던 문제를 해결 가능함
4. TCP 특징 ( 전송제어 프로토콜 : Transmission Control Protocol )
1 ) 연결지향 - TCP 3 way handshake (가상 연결)
: 연결이 먼저 됬는지 확인 한 후, 메시지를 보냄. 연결이 안됬으면 연결을 하고 메시지를 보냄
: 클라이언트도 SYN( 연결요청 ) 을 보내고, 서버도 SYN 을 보내고, 요청수락 ( ACK )를 각각 전달해줌 . 만약, 서버가 꺼져있으면, 요청 수락을 해주지 않음 .(응답 없음)
→ 요즘은 최적화가 되기 때문에 마지막 (3) ACK를 보내면서 메시지도 보냄
물리적인 연결이 아니고 논리적인 연결이다! 수많은 노드(서버)에 대해서는 모름!
2 ) 데이터 전달 보증
: 패킷이 중간에 누락됬다는 점을 알 수 있음
3 ) 순서 보장
: 큰 패킷이 있어서, 잘라서 보내게 됬을 경우, 만약 패킷의 순서가 올바르지 않게 도착했다면!
→ 다 버리고, 올바르지 않은 순서를 보냄 그럼 문제점을 알 수 있음
** 최적화 부분은 다 다르다.
⇒ 신뢰할 수 있는 프로토콜, 현재는 대부분 TCP 사용
5. UDP 특징 ( 사용자 데이터그램 프로토콜 : User Datagram Protocol )
: UDP는 TCP 와 같은 전송계층에 있는 프로토콜이다.
1 ) 기능이 거의 없음
연결지향 - TCP 3 way handshake X , 데이터 전달 보증 X, 순서 보장 X
2 ) 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
TCP 는 3 way handshake 하려면 전송 양도 많고 속도도 느리다. 더 최적화 하고 싶다는 생각이 들어도 할 수 없다. TCP 는 손을 댈수 없지만, 더 최적화하고싶은 생각이 든다면, UDP를 이용하면 된다.
3 ) IP와 거의 같지만, PORT 와 체크섬( 이 메시지가 맞는지 검증해주는) 정도만 추가되었다.
→ 애플리케이션에서 추가 작업 필요
대부분 TCP로 되어있지만, 최근에는 최적화를 위해 UDP를 사용하면서 뜨고 있다.
04. PORT
1. IP 주소만 사용했을 때의 문제점 → 2개이상 연결 시 구분 불가능
⁉️ 만약 인터넷으로 게임도 하면서 음악도 들으면서 메시지를 보내는중이라면 어떻게 될까 ?!
즉, 한번에 둘 이상 연결하려면 어떻게 해야하는가 ?
IP 만으로는, 구분을 할 수 없기 때문에 PORT 는 개념을 사용!
2. PORT
PORT : 같은 IP 내에서 프로세스 구분
즉, 게임 서버, 화상통화 서버 , 음악 서버 모두 다르게 적용
-
- 0 ~ 65535 할당 가능
- 0 ~ 1023: 잘 알려진 포트, 사용하지 않는 것이 좋음할당 번호
- FTP - 20, 21
- TELNET - 23
- HTTP - 80
- HTTPS - 443
05. DNS
1. IP의 문제점
- IP 는 기억하기 어렵다
- IP는 변경될 수 있다.
→ DNS 가 ip 의 문제점을 극복하게 해준다.
2. DNS ( 도메인 네임 시스템 : Domain Name System )
: 중간에 전화번호부 같은 서버를 제공해줌. 즉, 도메인 명을 IP주소로 변환시켜 줌
DNS 서버에 도메인을 등록할 수 있음. 도메인명으로 찾기 때문에 IP의 문제점을 극복할 수 있음
'PROGRAMMING > HTTP 웹 지식' 카테고리의 다른 글
[ 섹션 2. URI와 웹 브라우저 요청 흐름 ] URI , URL 분석 , 웹 브라우저 요청 흐름, HTTP 메시지 전송 (0) | 2021.08.19 |
---|