Chap 2. Protocol Architecture, TCP/IP, and Internet-Based Application
< Socket programming >
- socket
: application process와 end-end transport protocol 사이의 통과문
- types for transport services
1) UDP
: unreliable datagram
: 순서 보장 x
2) TCP
: reliable
: byte stream-oriented ("pipe")
: 순서 보장 o
UDP와 TCP 모두 server socket에 프로그램 상에서 프로그래머가 정한 port #로 bind시켜주어야 한다
➝ server socket의 경우 port #가 무엇인지 프로그래머가 알아야 한다.
(프로그램 상에서 지정 x, OS o)
; port #를 명시적으로 알고 있어야 client가 이를 사용하도록 할 수 있기 때문

< Application 동작 방식 예시 >
1. client가 키보드로부터 한 줄의 코드를 읽어 server에게 전송
2. server는 data를 받아 모두 대문자로 변경
3. server가 수정된 data를 client에게 전송
4. client가 수정된 정보를 받아 화면에 띄움
< Socket programming with UDP >
UDP → unreliable
: UDP server는 client가 보낸 데이터로부터 주소를 얻어 그 주소로 답장
: client와 server 사이 connection x
: handshaking x → setup x
: sender는 매 패킷마다 IP destination address, port #를 명시
: receiver는 받은 패킷에서 sender의 IP address, port #를 추출
: 전송한 data를 잃어버리거나 오래된 data가 될 수 있다
< client/server socket interaction: UDP >

: 하나의 socket을 통해 접속하는 모든 client 응대
→ client 별 socket을 만든 것이 아니기 때문에 한 client와의 통신이 끝나도
이후 다른 client를 응대하기 위해 socket을 계속 열어두어야 한다
C: clientSocket 생성
S: port # 지정 후 serverSocket 생성
C: server의 IP address, port #를 붙여 datagram 생성 → clientSocket을 통해 serverSocket으로 전송
S: serverSocket으로부터 datagram 읽음
S: serverSocket에 응답을 적어(client address와 port #를 명시) clientSocket으로 전송
C: clientSocket으로부터 datagram 읽음
C: clientSocket 종료
S: serverSocket 종료 x (계속 open)


< Socket programming with TCP >
TCP → reliable
> Client side
: server process가 먼저 작동
: server process는 만들어진 socket을 가지고 client의 contact를 맞이
: Client TCP socket은 server의 IP address, port #를 명시하여 TCP socket을 생성
→ 생성하는 순간 server TCP와 client TCP가 연결
> Server side
: client가 contact 요청 → 새 socket 생성하여 특정 client와 해당 socket으로 통신
: multiple한 client와 소통 가능
: source의 port #를 확인 → 어느 socket과 연결해야 하는 지 확인 (client가 쓰고 있는 프로그램 구별)
: 항상 켜져 있고 welcome socket(항상 존재)을 만들어 client의 contact 기다림
: client 별로 end-end 연결
< client/server socket interaction: UDP >

: 각 client별로 별도의 connection socket을 생성하여 데이터 교환
S: port # 지정 후 serverSocket 먼저 생성 → 먼저 실행 중(들어오는 connection request 대기)
C: host id, port #로 clientSocket 생성
C, S: TCP connection setup
C: clientSocket을 이용하여 connectionSocket으로 요청 보냄
S: connectionSocket으로부터 요청 읽음
S: connectionSocket에 응답을 적어 clientSocket으로 전송
C: clientSocket으로부터 datagram 읽음
C: clientSocket 종료
S: connectionSocket 종료


교재는 Data and Computer Communications를 참고하였고, 자료는 이화여자대학교 이형준 교수님의 정보통신공학 강의에서 가져온 것입니다.
'Study > 정보통신공학' 카테고리의 다른 글
[Week 4-2] Transmission Media - Wire, Wireless (1) | 2023.04.12 |
---|---|
[Week 4-1] Data Transmission (0) | 2023.04.12 |
[Week 3-1] Web - HTTP, Cookie, Cache, E-mail (0) | 2023.04.10 |
[Week 2-2] Principles of Network Applications (0) | 2023.04.09 |
[Week 2-2] Protocol Architecture, TCP/IP (0) | 2023.04.09 |