인터넷에서 컴퓨터 둘은 어떻게 통신할까?
IP(Internet Protocol)
지정한 IP 주소(IP Address) 에 데이터 전달
패킷(Packet) 이라는 통신 단위로 데이터 전달
비연결성 = 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
비신뢰성 = 중간에 패킷이 사라지면? 중간 서버가 꺼져버린경우, 패킷이 순서대로 안오면? 패킷이 너무큰 경우 잘라서 보내기 때문이다.
프로그램 구분 = 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면?
TCP ,UDP
아래로 내려갈수록 정보가 누적 된다. 처음에는 Socket으로 만들어지고 그 위에 TCP 정보를 추가하고(Segment) 그 다음 IP 정보를 추가하여 패킷(Packet)을 생성한다. LAN 드라이버에서 나갈떄 Ethernet frame (MAC 주소 정보도 있음) 을 추가하고 프레임(Frame) 상태로 나간다.
TCP 특징
연결지향 -TCP 3 way handshake(가상연결) = 상대방 컴퓨터가 연결이 가능한 지 확인
논리적인 연결이다. 중간에 수많은 서버를 거쳐 갈 수 도 있는데 그들의 상태까지는 자세히 알 수없다. 엔드 투 엔드 만 연결이 되었다라고 치는 것이다. 나를 위한 전용랜선이 있는게 아니다.
이 단계에서는 TCP/IP 패킷의 헤더 부분만 전송된다고 이해할 수 있다. 3,4 단계에서 헤더 + 데이터 부분이 함께 전송이 된다.
데이터 전달 보증
데이터를 잘 받았다는 티를 내줌으로서 전달을 보증해준다.
순서 보장
서버 내부 최적화 로직에 따라 다르겠지만 주로 패킷 1번 다음에 2번이 와야하는데 제대로 안오면 나머지 싸악 버리고 2번 부터 다시 보내라고 요청한다.
UDP
IP 랑 거의 같지만 PORT 와 체크섬 정도만 추가
존재이유는 좀더 최적화를 하기위해서 존재한다. TCP는 너무 이미 구현된 것이 많아서 최적화 하기 힘들다.
최근에는 HTTP3 같은 경우에는 UDP protocol 을 사용하면서 굉장히 뜨고 있다.
PORT
TCP segment 에 출발지 PORT , 목적지 PORT 가 존재한다.
같은 IP 내에서 프로세스 구분
0 ~ 65535 할당이 가능
0~1023 : 잘알려진 포트 사용하지않는 것이 좋음
FTP - 20,21
TELNET -23
HTTP - 80
HTTPS - 443
보통 웹 애플리케이션을 개발할 때 앞에 웹 서버(nginx) 를 80으로 띄우고, 그 뒤에 톰캣 같은 WAS 서버를 띄우는 구조로 많이 사용합니다. 그게 관례 처럼 되어서 톰캣 같은 WAS 서버들을 80 대신 다른 포트를 주로 사용합니다.
DNS
일종의 전화번호 부 같은 개념이다 추후에 IP 가 바뀌어도 같은 도메인명으로 요청하면 된다.
'Network > Network(Http)' 카테고리의 다른 글
김영한 (HTTP 웹 기본지식 9) HTTP 헤더 2 (0) | 2021.02.22 |
---|---|
김영한 (HTTP 웹 기본지식 8) HTTP 헤더 1 (0) | 2021.02.21 |
김영한 (HTTP 웹 기본지식 7) HTTP 상태코드 (0) | 2021.02.20 |
김영한 (Http 웹 기본 지식2,3,4) URL과 웹 브라우저 요청 흐름 , HTTP 기본, HTTP 메서드 (0) | 2021.02.16 |