[인터넷 네트워크]
<인터넷통신>
- 클라이언트와 서버 사이에 인터넷으로 연결되있음
- 인터넷은 복잡한 노드들의 연결로 되어있는데 어떻게 클라이언트에서 보낸 정보가 서버로 갈까???
-> IP (인터넷프로토콜)에서 알아보자
<IP>
- ip주소를 클라이언트, 서버에 부여받아서 지정한 ip주소에 데이터 전달
- Packet이라는 통신단위로 데이터 전달
- IP패킷정보 : 출발IP, 목적지IP,전송데이터
- ip패킷으로 서로 정보를 주고받을수 있음
ip프로토콜의 한계
-비연결성 : 패킷 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
-비신뢰성 : 중간에 패킷이 사라지면??? 패킷이 순서대로 안오면????
-프로그램 구분 : 같은 ip를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면?
-인터넷프로토콜은 대상서버가 패킷을 받을수 있는 상태인지 모름(비연결성)
-패킷소실(비신뢰성)
-패킷 전달 순서 문제 발생(프로그램 구분)
-> 이런 인터넷프로토콜의 문제를 해결하기위해 TCP, UDP가 나옴
<인터넷 프로토콜>
<ip스택의 4계층>
애플리케이션계층 - HTTP, FTP
전송계층 - TCP, UDP
인터넷계층 - IP
네트워크 인터페이스 계층
<프로토콜 계층>
애플리케이션
OS
네트워크 인터페이스
- 프로그램이 Hello, world! 작성
- Socket 라이브러리를 통해 전달
- TCP 정보생성, 메시지 데이터 포함
- IP 패킷 생성, TCP 데이터 포함
TCP특징
전송제어 프로토콜(Transmission Control Protocol)
- 연결지향 - TCP 3way handshake(가상연결)
- 데이터 전달 보증
- 순서 보장(출발지 PORT, 목적지 PORT, 전송제어, 순서, 검증정보가 TCP 세그먼트로 포함)
- 신뢰할수있는 프로토콜
- 현재는 대부분 TCP사용
UDP특징
사용자 데이터그램 프로토콜(User Datagram Protocol)
- 하얀 도화지같음(기능이 거의 없음)
- 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
- IP와 거의 같지만 + PORT+체크섬 이 추가
- 애플리케이션에서 추가작업 필요
'코딩조각' 카테고리의 다른 글
[java] 추상클래스와 인터페이스를 사용하는 이유 (0) | 2022.09.08 |
---|---|
[Spring] 스프링 핵심원리: 객체지향 설계의 5가지 원칙 SOLID(inflearn 김영한님 강의) (0) | 2022.09.06 |
[git] git rebase쉽게하는법, 원격 github에서 특정 브랜치만 가져오기 (0) | 2022.08.19 |
postman에 token저장하는방법 (0) | 2022.08.18 |
[Spring] Servlet과 Spring MVC (0) | 2022.08.15 |