일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 |
Tags
- 탐욕 알고리즘
- git 설정
- Spring 예외처리
- ubuntu
- custom exception
- 자료구조
- ubuntu 패스워드
- root passwd
- mapstruct
- Java
- git workflow
- 스키마 설계
- file i/o
- AOP
- 배열 탐색
- set-version
- O(log n)
- Spring MVC
- Spring
- ubuntu passwd
- JAVA 재귀함수
- RestControllerAdvice
- 코드스테이츠
- REST HTTP API
- 스키마 디자인
- 함수형 인터페이스
- 리눅스 사용권한
- N:N
- char to int
- http 응답코드
Archives
- Today
- Total
개발소설
네트워크 기초 본문
LAN (Local Area Network) - 좁은 범위에서 연결된 네트워크를 의미한다. (집, 학교내, 회사내 등)
WAN (Wide Area Network) - 수많은 LAN이 모여 넓은 네트워크를 구성한다. (전 세계)
인터네트워킹(Internetworking)
- 여러 네트워크를 연결하는 것을 인터네트워킹이라고 한다.
- 네트워크의 일부가 고장이 나도 영향이 광범위하게 퍼지지 않고, 불필요한 통신이 네트워크로 확신하지 않는다.
- 개별 네트워크를 각각의 방침에 따라 관리 한다.
- 전 세계적으로 인터네트워킹 하는 것이 인터넷(The Internet) 이다.
프로토콜(protocol)
- 인터넷으로 연결된 컴퓨터간, 전가기기간 서로 소통하기 위한 통신규약 - 원활한 통신을 위한 약속이라고 볼 수 있다.
- 전 세계가 인터넷으로 연결되어 자유롭게 사용가능한것은 프로토콜이 있기 때문이다. (TCP/IP)
TCP/IP
- 인터넷이 처음 시작하던 시기에 정의되어 현재까지 표준으로 사용되고 있는 프로토콜 이다.
- 대다수의 프로그램은 TCP/IP로 통신한다고 보면 된다.
TCP/IP의 4계층
층수 | 계층명 | 주요 프로토콜 | 역할 |
4층 | 응용 계층 | HTTP, DNS, FTP | 애플리케이션에 맞추어 통신 |
3층 | 전송계층 | TCP, UDP, ... | IP와 애플리케이션을 중개해 데이터를 전달 한다. |
2층 | 인터넷 계층 | IP, ICMP, ARP, RARP | 네트워크 주소를 기반으로 데이터 전송 |
1층 | 네트워크 접근 계층 | Ethernet, wifi, .... | 컴퓨터를 물리적으로 네트워크에 연결 |
- 데이터가 송신자에 4층에서 시작해 수신자에 4층으로 도착한다. 4->3->2->1 -> 1->2->3->4
IP (Internet Protocol)
- 컴퓨터 또는 전자기기가 통신을 하기 위한 네트워크상 주소라고 볼 수 있다.
- 숫자 4덩어리를 .구분하고 각 숫자는 0~255 사이를 사용한다. ex) 192.168.123.123
- 위와 같은 체계를 IPv4 (버전4) 라고하며 IPv4의 주소 갯수는 2^32 약 43억개 정도 이다.
- 인터넷을 사용하는 전자기기 및 컴퓨터가 많아짐에 따라 IPv6가 등장 하였다
- IPv6는 2^128개의 주소를 가질수 있다.
- IP주소에는 사용 용도가 정해진 IP주소들이 있다.
- 127.0.0.1은 localhost, 현재 사용 중인 로컬 PC를 지칭
- 0.0.0.0 255.255.255.255 : brodcast adress로 로컬 네트워크에 접속된 모든 장치와 소통하는 주소
- 서브넷 마스크
- IP의 네트워크 영역과 호스트 영역을 구분하기 위해 사용한다.
- IP가 192.168.100.1이고 서브넷 마스크가 255.255.255.0인 경우
- 해당 IP는 192.168.100.0 네트워크에 속한 호스트 이고
- 해당 네트워크 영역에 브로드 캐스트 주소는 192.168.1.255 이다.
- 255.255.0.0이면 네트워크영역은 192.168.0.0, 브로드 캐스트 주소는 192.168.255.255
- IP 프로토콜은 비연결성, 비신뢰성의 특성을 가지고있어 한계가 있기 때문에 이를 보완하기 위해 TCP와 UDP가 있다.
MAC 주소
- 각 네트워크 기기는 처음부터 제조사에서 할당하는 고유 시리얼인 MAC주소를 가지고 있다.
- IP와 MAC주소를 조합해야만 네트워크를 통한 통신이 가능
- 이더넷에서 MAC주소를 사용하고, TCP/IP에서 IP를 사용한다.
- 같은 LAN에 속해있으면 우선 상대방의 MAC주소를 파악하여(ARP) 통신한다.
TCP와 UDP
- 네트워크 계층과 응용 계층을 중개하는 역할을 한다.
- TCP와 UDP의 차이
TCP | UDP | |
서비스 타입 | 연결 지향적 | 데이타그램 지향적 |
신뢰성 | 데이터 전송 표적 기기까지 전송을 보장 | 전송이 보장되지 않음 |
순서 보장 | 전송하는 패킷들의 순서 보장 | 패킷순서 보장안됨, 응용 계층에서 관리해야함 |
속도 | UDP에 비해 느리다 | TCP에 비해 빠르다 |
- TCP는 신뢰적인 대신 속도가 비교적 느리고, UDP는 신뢰적이지 않은 대신 속도가 빠르다.
- HTTP의 경우 TCP를 사용한다. - 모든 데이터가 제대로 송수신 되어야 한다.
TCP 3-way handshake
- TCP는 1970년대 미 국방부가 미국,영국,프랑스 대학들의 연구자들과 협력하여, 국가간 전쟁중에도 데이터의 온전성과 통신기능의 원활한 사용을 위해 개발하였다.
- 3-way handshake는 양 끝단(end to end) 기기의 신뢰성 있는 데이터 통신을 하기위해, TCP 연결을 설정하는 방식 3단계로 구성되어 있다. - 사전적으로 악수를 의미한다. 대화하기전 악수를 하며 인사하는것과 같다.
- SYN : 송신자(sender)는 수신자(reciver)와 연결 설정하기 위해, segment를 랜덤으로 설정된 SYN(Synchronize Sequence Number)와 함께 전송 - sender가 reciver에게 통신을 하고싶다고 요청하는것
- SYN/ACK : reciver는 받은 요청을 바탕으로 SYN/ACK 신호 세트를 응답, Acknowledgement(ACK)는 응답으로 보내는 segment가 유요한 syn요청을 받았는지 의미 - reciver가 sender에게 전송 받을 준비가 됬다고 보내는 것
- ACK : sender는 받은 ACK를 reciver에게 전송하면서, 신뢰성 있는 연결이 성립되었다는 사실을 sender와 reciver가 확인할 수 있고, 실제 데이터 전송이 시작된다.
UDP
- 신뢰적이지 않지만 데이터의 빠른전송이 필요한 경우 사용한다.
- TCP를 사용하게 되면 3-way handshake를 선행해야 하므로 사용할때 latency가 발생할 수 있다.
- 예를 들면 게임이나 음성채팅 같은 경우 즉작적인 송수신이 필요한데 tcp를 사용하면 latency가 발생할 가능성이 높다.
- 데이터 손실이 발생 할 수 있기때문에 개발자가 이를 보완하기 위해서 애플리케이션 내에서 추가 기능을 구현 할 수도 있다.
- 연결간 어떠한 설정도 필요없기 때문에 파라미터값이 존재하지 않아 TCP보다 더 많은 클라이언트를 수용 할 수 있다.
PORT
- IP주소만 있다면 한 IP주소에서 여러 애플리케이션을 동작할때 각 애플리케이션을 구분 할 수 없다.
- 포트 번호는 대상 IP 기기의 특정 애플리케이션을 구분하는 번호 이다.
- 포트 번호는 0~65535 까지 사용가능하다. 0~1023번 까지는 주요 통신을 위한 규약으로 이미 정해져 있다.
port number | name | 용도 |
0 ~ 1023 | Well-known port | 시스템 사용 번호 (슈퍼 유저 권한 필요) |
1024 ~ 49151 | Registered port | 특정 프로토콜이나 애플리케이션에서 사용 하는 번호 |
49152 ~ 65535 | Dynamic port | 애플리케이션 또는 임시로 사용하는 번호 |
자주 사용하는 Well-Known port
- 80 : HTTP - 웹서버
- 443 : HTTPS - 웹서버 (SSL)
- 110 : POP3 - 메일 읽기
- 25 : SMTP - 메일 전송
- 22 : SSH - 원격 로그인 (cli)
- 21 : FTP - 파일 전송
- 23 : Telnet - 암호화되지 않은 텍스트 통신
- 53 : DNS - 도메인 질의
- 123 : NTP - 시간동기화
URL (Uniform Resource Locator)
- 웹에서 어떤 자원을 찾기 위한 브라우저에서 사용되는 메커니즘, 인터넷상에서 html이나 이미지등 리소스를 위치를 특정하는 서식
- 브라우저의 주소창에 입력한 URL은 서버가 제공되는 환경에 존재하는 파일의 위치를 나타낸다.
- URL의 구분
- scheme://hosts:port/url-path?query
- scheme - 통신 프로토콜
- hosts - 웹페이지, 이미지등의 파일이 위치한 웹서버의 도메인 또는 ip
- port - 포트번호
- url-path - 웹서버의 루트디렉토리부터 해당하는 파일의 위치까지의 경로
- query = 웹서버의 전달하는 추가 적인 질문
- ex) https://dev-novel.tistory.com:443/manage/newpost/73?type=post
- scheme : https
- hosts : dev-novel.tistory.com
- port : 443
- url-path : manage/newpost/73
- query : ?type=post
Comments