728x90
1. 인터넷 통신
- 복잡하게 통신
2. IP(internet protocal)
- 역할
- 지정한 IP주소에 데이터 전달
- 패킷이라는 통신 단위로 데이터 전달
- 패킷: 출발지 IP, 목적지 IP 등등으로 전송할 데이터를 감싼 형태
- 클라이언트가 패킷을 서버에 전달하고 (전달받은 서버는 패킷을 버리고 데이터만 확인)
- 서버도 패킷으로 감싸서 보낼 정보를 전달
- 한계
- 비연결성 : 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
- 비신뢰성: 중간에 패킷이 사라진지, 패킷이 순서대로 온지 알수 없음
- 프로그램 구분: 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상일 때 구분하는 방법
3. TCP, UDP
- TCP: IP의 한계점을 개선해줌, 시장점유율이 높다.
- UDP: 큰 도움을 주지 않지만 도움을 준다. http3.0 부터 권장하는 추세
- 패킷정보
- IP패킷 정보: 출발지 IP, 목적지 IP
- TCP패킷 정보: 출발자 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보
- PORT: 0 ~65535 할당 가능. 0~1023은 쓰지말 것. http - 80 https - 443 할당(서버기준 할당)
- 프로세스 = 프로그램이 작동하고 있는 상태
- TCP 특징
- 연결지향 - TCP 3 way handshake(가상연결): 연결을 한 후 message 보냄 (server의 on/off 확인 가능)
- TCP 3way
- client -> server: SYN(접속요청)
- server -> client: SYN+ACK(접속요청, 요청 수락)
- client -> server: ACK(요청 수락과 함께 데이터 전송 가능)
- TCP 3way
- 데이터 전달보증
- 순서 보장
- 신뢰할 수 있는 프로토콜
- 현재는 대부분 TCP 사용
- 연결지향 - TCP 3 way handshake(가상연결): 연결을 한 후 message 보냄 (server의 on/off 확인 가능)
- UDP 특징
- 연결지향 - TCP 3 way handshake X, 데이터 전달 보증 X, 순서 보장 X = 기능이 거의 없다. 하지만 단순하고 빠르다.
- IP와 거의 같고 PORT, 체크섬 정도만 추가
애플리케이션에서 추가 작업 필요 (빨라서 요즘 뜨는 추세, 그래도 시장 점유율은 아직까지 TCP가 97% 정도 된다.)
4. port
- 1개의 pc에서 여러 서버를 띄울 때 http웹서버를 띄우면 80 port 값(default) 가진다.
또다른 http웹서버를 띄우면 이땐 80 말고 다른 port를 이용 해야한다.- ex) localhost 8080 서버를 띄우고 localhost 8081 서버를 또 띄울 수 있다.
- client쪽에서 요청할 때 client의 port는 동적으로 결정(= random 배정)
- 웹 서버 중 http 통신 규약을 쓰는 server들은 80 port를 사용 - google, naver
- 통신 규약이 ftp 같은 경우는 port가 20, 21로 고정되어있다.
- 각 프로세서들이 동일한 port를 가져도 client에서 보내는 출발 port가 동적으로 각각 process마다 다르게 보내지므로 문제가 없다.
- 그렇다고 google, naver 같은 웹서버들이 무조건 80을 사용해야하는 것이 아니다. 자신이 원하는 port 번호로 변경이 가능하다.
하지만 80 이외의 port 번호를 사용시 uri 접속시 port 번호를 필수로 지정해야한다.
- port는 큰 묶음으로 봐야 이해가 쉽다.
- naver 서버, google 서버 이런식으로 보면 안된다.
- 웹서버, 게임서버, 미디어 서버든 조금더 큰 분류로 이해
- 서버에 지정된 번호
- 웹서버
- http 통신하는 서버 - 80
- ftp로 통신하는 서버 - 20
- localhost로 개발 연습하는 서버 - 따로 없음
- 게임 서버
- 미디어 서버
- 웹서버
- 이제 각 애플리케이션 서버로 봤을 때
- 내 앱이 http로 통신한다하면 default로 80 port를 가지고 바꾸고 싶으면 바꿔도 된다.
- 내가 앱을 2개 이상 한 컴퓨터에 돌리고 싶은데 2개다 http 웹서버로 동작하고 싶으면 하나는 무조건 다른 port로 지정해야함
-> 이런 경우, 요청이 여러개 올 때 어느 곳으로 가야할지 모름 그래서 port로 구분 필요
5. DNS
- IP주소 기억이 어렵고, IP가 변경될 수도 있기 때문
- 전화번호부, 도메인 명을 IP주소로 변환
다음 발행글: 2. URI & Web browser
출처: 모든 개발자를 위한 HTTP 웹 기본 지식